使用安装在 HOME 目录中的 cudnn 编译 caffe(没有 root 权限):找不到 lcudnn

compiling caffe with cudnn installed in HOME directory(without root priviledg): cannot find lcudnn

最近在服务器上编译caffe遇到一个问题,提示/usr/bin/ld: cannot find -lcudnn 因为我没有 root priviledge,我在我的 HOME 目录中安装了 CUDA-8.0,然后下载 libcudnn7-dev 并手动执行 dpkg-deb -xv libcudnn-dev*.deb 来提取 deb pkg,然后我进入lib目录,然后运行 ar -x libcudnn*.agcc -shared *.o -o libcudnn.so,然后将生成的libcudnn.so复制到~/cuda/lib64,然后添加~/cuda/lib64LD_LIBRARY_PATH,但提示错误,我不知道如何解决这个问题,有人可以帮忙吗?

而且我不明白为什么是 /usr/bin/ld: cannot find -lcudnn,而不是 LD_LIBRARY_PATH/=: cannot find -lcudnn

编辑: 我下载了.tgz文件,按照安装指南安装cudnn,还是提示错误,我的~/.bashrc is configured:

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权限,我在本地机器上编译成功,但这似乎很难

我们新手要多学点东西,别人有时候帮不了你,自己多学点吧! 原来linking和dynamic loading不一样,linking done pre到dynamic loading,LD_LIBRARY_PATH能影响的是dynamic loading,给的是库文件路径(eg,.so.1.0,不是.so这通常是 .so.1.0 东西的符号链接,用于链接器而不是加载器),因此将 libcudnn.so 路径添加到 LD_LIBRARY_PATH 没有帮助,/usr/bin/ld 抱怨的是链接器找不到cudnn库,所以我们需要添加libcudnn.so路径让链接器找到它,这就是LIBRARY_PATH来帮助的,只需添加它,然后链接器就可以找到它,有时我们只是方向不对,不要烦,多学习就好:)