darkent-gpu安装中/bin/sh: 1: nvcc: not found和/usr/bin/ld: cannot find -lcuda
今天在云服务器上安装darknet遇到如下问题,问题及解决方案如下:
1.nvcc: not found
/bin/sh: 1: nvcc: not found
Makefile:92: recipe for target ‘obj/activation_kernels.o’ failed
make: *** [obj/activation_kernels.o] Error 127
make: *** Waiting for unfinished jobs…
/bin/sh: 1: nvcc: not found
Makefile:92: recipe for target ‘obj/convolutional_kernels.o’ failed
make: *** [obj/convolutional_kernels.o] Error 127
/bin/sh: 1: nvcc: not found
Makefile:92: recipe for target ‘obj/deconvolutional_kernels.o’ failed
make: *** [obj/deconvolutional_kernels.o] Error 127
解决方式
修改Makefile文件,将其中的NVCC=nvcc改为/usr/local/cuda-*/bin/nvcc即安装的cuda版本信息,比如我的修改就是
NVCC=/usr/local/cuda-10.0/bin/nvcc
然后 make clean之后 make -j16.
2. /usr/bin/ld: cannot find -/lcuda
/usr/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
Makefile:83: recipe for target 'libdarknet.so' failed
make: *** [libdarknet.so] Error 1
make: *** Waiting for unfinished jobs....
/usr/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
Makefile:77: recipe for target 'darknet' failed
make: *** [darknet] Error 1
解决方式
首先,修改Makefile中的出现cuda的地方
ifeq ($(GPU), 1)
COMMON+= -DGPU -I/usr/local/cuda-10.0/include/ #原始文档中为/usr/local/cuda/include/
CFLAGS+= -DGPU
LDFLAGS+= -L/usr/local/cuda-10.0/lib64 -lcuda -lcudart -lcublas -lcurand
endif
然后参考:linux /usr/bin/ld cannot find 解决
找到libcuda.so
whereis libcuda
libcuda: /usr/bin/libcuda /usr/lib/libcuda.so
进入/usr/lib
cd /usr/lib #注意是进入/usr/lib, 之前好几次进入了/usr/bin导致失败
ln -s libcuda.so.1 libcuda.so #建立链接,具体可以参考上述文档
然后 make clean之后 make -j16.
opencv导致的安装问题
gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config --cflags opencv` -DGPU -I/usr/local/cuda-10.0/include/ -DCUDNN -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU -DCUDNN obj/captcha.o obj/lsd.o obj/super.o obj/art.o obj/tag.o obj/cifar.o obj/go.o obj/rnn.o obj/segmenter.o obj/regressor.o obj/classifier.o obj/coco.o obj/yolo.o obj/detector.o obj/nightmare.o obj/instance-segmenter.o obj/darknet.o libdarknet.a -o darknet -lm -pthread `pkg-config --libs opencv` -lstdc++ -L/usr/local/cuda-10.0/lib64 -lcuda -lcudart -lcublas -lcurand -lcudnn -lstdc++ libdarknet.a
//usr/lib/x86_64-linux-gnu/libblas.so.3: undefined reference to `gotoblas'
collect2: error: ld returned 1 exit status
Makefile:77: recipe for target 'darknet' failed
make: *** [darknet] Error 1
解决方式
感觉在训练中opencv并没有用到,可以在Makefile中修改opencv=0
GPU=1
CUDNN=1
OPENCV=0
OPENMP=0
DEBUG=0