libcuda.so.1: cannot open shared object file: No such file or directory

现象:我想重新安装CUDA,所以手动把 /lib/x86_64-linux-gnu 下的libcuda*给删除,卸载重新安装CUDA。结果运行程序时提示 

 

libcuda.so.1: cannot open shared object file: No such file or directory。

我的/usr/local下确实有CUDA文件夹,里面也能找到libcuda.so 和 libcudart.so。

分析:/lib/x86_64-linux-gnu下的libcuda.so.1并不是安装cuda的时候生成的,他是link到 libcuda.so.driver_version的(删除之前查看过……),应该是安装driver的时候生成的(还是猜测)。他提供了调用cuda的接口。

方法:运行

apt-file search -x '/libcuda.so.1$' 

查看该缺失文件所在的包

System-Product-Name:~$ apt-file search -x '/libcuda.so.1$'
libcuda1-340: /usr/lib/i386-linux-gnu/libcuda.so.1
libcuda1-340: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-390: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-418-server: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-435: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-440: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-450-server: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-460: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-460-server: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-470: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-470-server: /usr/lib/x86_64-linux-gnu/libcuda.so.1
libnvidia-compute-495: /usr/lib/x86_64-linux-gnu/libcuda.so.1

发现都是在驱动文件里,好吧,卸载重装驱动

sudo apt remove libnvidia-compute-470
sudo apt install libnvidia-compute-470

发现libcuda.so.1 和 libcuda.so.470.86都回来了。上面的猜测得到了验证~

System-Product-Name:/lib/x86_64-linux-gnu$ ll libcuda*
lrwxrwxrwx 1 root root       21 4月  11  2020 libcudart.so.10.1 -> libcudart.so.10.1.243
-rw-r--r-- 1 root root   504480 8月  10  2019 libcudart.so.10.1.243
lrwxrwxrwx 1 root root       12 11月 12 00:08 libcuda.so -> libcuda.so.1
lrwxrwxrwx 1 root root       17 11月 12 00:08 libcuda.so.1 -> libcuda.so.470.86
-rw-r--r-- 1 root root 24139176 10月 27 06:09 libcuda.so.470.86

在/lib/x86_64-linux-gnu 目录下, .so -> .so.1 -> .so.driver_version,三者md5值是相同的。libcuda.so.1: cannot open shared object file: No such file or directory_第1张图片

libcuda.so提供对CUDA driver API的访问,而libcudart.so提供对CUDA runtime API的访问。更多请参考Ubuntu Manpage: libcuda.so - The NVIDIA CUDA Driver Libraryhttp://manpages.ubuntu.com/manpages/focal/man7/cuda-libraries.7.html

但是有了新报错~

libnvidia-encode.so.1: cannot open shared object file: No such file or directory

同样通过上述方式进行安装找回。

待解决问题:同样在CUDA的安装目录下,也有libcuda.so,/lib/x86_64-linux-gnu目录下的libcuda.so 和 CUDA目录下的libcuda.so 有什么不同?

你可能感兴趣的:(构建与调试(Build,&,Debug),环境配置,linux,cuda,driver,nvidia)