使用安装在 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*.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 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
来帮助的,只需添加它,然后链接器就可以找到它,有时我们只是方向不对,不要烦,多学习就好:)
最近在服务器上编译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*.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 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
来帮助的,只需添加它,然后链接器就可以找到它,有时我们只是方向不对,不要烦,多学习就好:)