“/ usr / bin / ld:找不到-lcudart”

我是Ubuntu的新手,使用64位的Ubuntu 14.04。 我想make一个使用cudaopencv的项目我在运行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 

(如果这就是你得到的)

它对我有用