最近在服务器上编译caffe时遇到问题,提示/usr/bin/ld: cannot find -lcudnn
由于我没有root priviledge
,我在CUDA-8.0
目录中安装了HOME
,然后下载libcudnn7-dev
并手动执行dpkg-deb -xv libcudnn-dev*.deb
以提取deb pkg,然后我转到lib目录,然后运行ar -x libcudnn*.a
和gcc -shared *.o -o libcudnn.so
,然后将生成的libcudnn.so
复制到~/cuda/lib64
,然后将~/cuda/lib64
添加到LD_LIBRARY_PATH
,但错误提示,我不知道如何解决此问题,有人可以提供帮助吗?
我不明白为什么/usr/bin/ld: cannot find -lcudnn
,而不是LD_LIBRARY_PATH/=: cannot find -lcudnn
编辑: 我下载了.tgz文件,并按照安装指南说明安装cudnn,但它仍然提示错误,我的〜/ .bashrc已配置:
export CUDA_HOME="~/cuda"
export PATH="/home/wangtao/anaconda2/bin:$CUDA_HOME/bin:$PATH"
export LD_LIBRARY_PATH="$CUDA_HOME/lib64:$LD_LIBRARY_PATH"
我发现/etc/ld.so.conf
是这样的:
include /etc/ld.so.conf.d/*.conf /usr/local/cuda-7.0/lib64
它不是我想要的~/cuda/lib64
路径,但不知道如何修改它,因为我没有在服务器上拥有root权限,我已在本地机器上成功编译,但这似乎是很难
答案 0 :(得分:-1)
我们新手需要了解更多,也许其他人有时候不会帮助你,帮助自己,了解更多!
事实证明链接不同于动态加载,链接完成前动态加载,LD_LIBRARY_PATH
可以影响的是动态加载,这给出了库文件路径(例如,.so.1.0
,而不是.so
这通常是.so.1.0
内容的符号链接,用于链接器而不是加载器),因此将libcudnn.so
路径添加到LD_LIBRARY_PATH
没有帮助,/usr/bin/ld
抱怨的是链接器找不到cudnn库,所以我们需要为链接器添加libcudnn.so
路径来找到它,这是LIBRARY_PATH
来帮助的,只需将它添加到它,然后链接器可以找到它,有时我们只是没有正确的方向,不讨厌,只是学习更多:)