ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

今天,因为需要跑一个tensorflow1.2的代码,被迫将cuda从10切换到了8,cudnn从7切换到5.具体做法可以参见我的另一篇文章ubuntu16.04上的cuda安装、卸载以及替换.

将~/.bashrc, /etc/profile都改了以后,进行到修改cuda.conf时,发现/etc/ld.so.conf.d文件夹下已经有了一个cuda-10.conf,里面的路径是usr/local/cuda10/targetsx86_64-linux/lib. 最初,我在这个文件夹下直接又添加了一个cuda.conf文件,在文件第一行写了/usr/local/cuda/lib64. 执行sudo ldconfig时,报错了.我忽略报错,在python命令行import tensorflow,就报了"ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory".

一般来讲,报这个错是因为cudnn版本不对,更换cudnn版本也可以参见ubuntu16.04上的cuda安装、卸载以及替换这篇文章.

但是由于我已经将cuda/lib64中的cudnn版本换成5了,所以不是这个原因,很有可能是导入的时候,还是搜索到了cuda-10的目录下.

联想到之前的报错信息,我将cuda-10.conf文件中第一行注释掉,加上/usr/local/cuda/lib64这一行,再执行ldconfig时,打出的信息显示cudnn版本已经换成了5.此时再import tensorflow就不会报错了.

ldconfig是系统管理动态链接库的命令,主要作用是在默认搜索目录(lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列目录下,搜索出可共享的动态链接库. 之前运行ldconfig报错,应该是因为cuda-10.conf中的路径不可用,因此也没有继续在后面的文件中搜索.我删掉cuda-10.conf,只保留cuda.conf,再执行ldconfig,import tensorflow也没有再报错.问题解决.~.~

你可能感兴趣的:(ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory)