试图'制作'CUDA SDK,ld找不到库,ldconfig说它可以

时间:2010-04-26 19:37:07

标签: c++ compiler-construction makefile cuda linker-errors

我知道还有很多类似的问题,但是那里提出的解决方案都没有为我工作

基本上,制作SDK示例文件,我得到/usr/bin/ld: cannot find -lcuda 这很容易'找到库并将其扔到ldconfig',除了ldconfig已经说它有它...

$ sudo ldconfig -v | grep cuda
/usr/local/cuda/lib64:
    libcudartemu.so.3 -> libcudartemu.so.3.0.14
    libcudart.so.3 -> libcudart.so.3.0.14
/usr/local/cuda/lib:
    libcudartemu.so.3 -> libcudartemu.so.3.0.14
    libcudart.so.3 -> libcudart.so.3.0.14
    libcuda.so.1 -> libcuda.so.195.36.15
    libcuda.so.1 -> libcuda.so.195.36.15
    libicudata.so.42 -> libicudata.so.42.1

我检查过,有一个符号链接libcuda.so -> libcuda.so.1,但我仍然对libcuda.so -> ...没有出现的原因感到困惑

我必须遗漏一些非常明显的东西。有什么想法吗?

3 个答案:

答案 0 :(得分:7)

ldconfig仅处理运行时库,而ld处理构建时库。根据您安装CUDA库的方式,您可能需要为构建时使用的符号链接安装一个额外的包,或者您可能需要将-L选项传递给gcc或ld以告知其构建位置 - 时间符号链接是。

答案 1 :(得分:7)

添加到.bash_profile

export PATH=/usr/local/cuda/bin:$PATH
export LPATH=/usr/lib/nvidia-current:$LPATH
export LIBRARY_PATH=/usr/lib/nvidia-current:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH

和source .bash_profile

答案 2 :(得分:1)

尝试在编译器/链接器命令行上的-lcuda之前添加-L / usr / local / cuda / lib。