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

Bol*_*ter 11 c++ compiler-construction cuda makefile 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
Run Code Online (Sandbox Code Playgroud)

我检查过,有一个符号链接,libcuda.so -> libcuda.so.1但我仍然感到困惑,为什么libcuda.so -> ...不显示

我必须遗漏一些非常明显的东西.有任何想法吗?

Ign*_*ams 7

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

  • 这实际上是CUDA SDK Makefile中的一个缺点.默认情况下,它们应该传递当前的-L选项.目前放置它的地方是`C/common/common.mk:148`.将此行更改为"LINKFLAGS + = -L/usr/lib/nvidia-current". (2认同)

小智 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
Run Code Online (Sandbox Code Playgroud)

和源.bash_profile

  • 作为临时修复,您还可以在构建SDK代码示例时执行`make LIBRARY_PATH =/usr/lib/nvidia-current:$ LIBRARY_PATH`. (3认同)