“/ usr / bin / ld:找不到-lcudart”
我是Ubuntu的新手,使用64位的Ubuntu 14.04。 我想make
一个使用cuda
和opencv
的项目我在运行cmake . && make
时遇到以下错误cmake . && make
cmake . && make
Linking CXX executable ground_estimation /usr/bin/ld: cannot find -lcudart collect2: error: ld returned 1 exit status make[2]: *** [ground_estimation] Error 1 make[1]: *** [CMakeFiles/ground_estimation.dir/all] Error 2 make: *** [all] Error 2
这是ld -lcudart --verbose
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.so failed attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.a failed attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.so failed attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.a failed attempt to open //usr/local/lib64/libcudart.so failed attempt to open //usr/local/lib64/libcudart.a failed attempt to open //lib/x86_64-linux-gnu/libcudart.so failed attempt to open //lib/x86_64-linux-gnu/libcudart.a failed attempt to open //lib64/libcudart.so failed attempt to open //lib64/libcudart.a failed attempt to open //usr/lib/x86_64-linux-gnu/libcudart.so failed attempt to open //usr/lib/x86_64-linux-gnu/libcudart.a failed attempt to open //usr/lib64/libcudart.so failed attempt to open //usr/lib64/libcudart.a failed attempt to open //usr/local/lib/libcudart.so failed attempt to open //usr/local/lib/libcudart.a failed attempt to open //lib/libcudart.so failed attempt to open //lib/libcudart.a failed attempt to open //usr/lib/libcudart.so failed attempt to open //usr/lib/libcudart.a failed
libcudart
存在于/usr/local/cuda/lib64
,我还添加到了Library Path:
echo $LD_LIBRARY_PATH /usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
这是ls /usr/local/cuda/lib64
:
libcublas_device.a libcufftw.so.6.0.37 libnppi.so.6.0 libcublas.so libcuinj64.so libnppi.so.6.0.37 libcublas.so.6.0 libcuinj64.so.6.0 libnpps.so libcublas.so.6.0.37 libcuinj64.so.6.0.37 libnpps.so.6.0 libcudadevrt.a libcurand.so libnpps.so.6.0.37 libcudart.so libcurand.so.6.0 libnvblas.so libcudart.so.6.0 libcurand.so.6.0.37 libnvblas.so.6.0 libcudart.so.6.0.37 libcusparse.so libnvblas.so.6.0.37 libcudart_static.a libcusparse.so.6.0 libnvToolsExt.so libcufft.so libcusparse.so.6.0.37 libnvToolsExt.so.1 libcufft.so.6.0 libnppc.so libnvToolsExt.so.1.0.0 libcufft.so.6.0.37 libnppc.so.6.0 libOpenCL.so libcufftw.so libnppc.so.6.0.37 libOpenCL.so.1 libcufftw.so.6.0 libnppi.so
我该怎么做才能在/usr/local/cuda/lib64
路径中搜索libcudart
?
创建一个符合libcuda
的符号链接,其中ld
正在搜索它。
sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
LD_LIBRARY_PATH
用于在执行时查找库时修改ldconfig
及相关工具的行为。
ld
链接器工具不使用此变量。 如果要使用位于非标准目录中的库,则必须使用命令的-L
参数,如下所示:
ld -lcuda -L/usr/local/cuda/lib64
如果您已经下载并且现有项目并且不知道如何在不破坏整个编译的情况下修改现有的Makefile,则可以按以下方式运行:
export LDFLAGS=-L/usr/local/cuda/lib64 make
变量LDFLAGS(也可以定义到Makefile中)用于在编译说明启动时将特定参数传递给链接器( ld
)。
您可以创建链接而不是添加路径:
ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/ ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
我修好了! 转到您的makefile并进行更改
/usr/local/cuda/
至
/usr/local/cuda-7.0
(如果这就是你得到的)
它对我有用