Error: libxxxxxxx: cannot open shared object file: No such file or directory

出现Error: libxxxxxxx: cannot open shared object file: No such file or directory 的可能有效解决方法如下:

注:前提是本地能够找到libxxxxxxx,但一直提示:

复制代码
Could not load library libxxxxxxx. Error: libxxxxxxx: cannot open shared object file: No such file or directory
Please make sure libxxxxxxx is in your library path!

这里以libcudnn_cnn_infer.so.8为例。

先运行:

复制代码
ldconfig -p | grep cuda

得到输出:

复制代码
	libcudart.so.11.0 (libc6,x86-64) => /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudart.so.11.0
	libcudart.so.10.2 (libc6,x86-64) => /lib/libcudart.so.10.2
	libcudart.so (libc6,x86-64) => /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudart.so
	libcudadebugger.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudadebugger.so.1
	libcuda.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcuda.so.1
	libcuda.so.1 (libc6) => /lib/i386-linux-gnu/libcuda.so.1

打比方说,libcudart.so.11.0,是放到/usr/local/cuda-11.3/targets/x86_64-linux/lib/目录下面的。

然后找到本地的libcudnn_cnn_infer.so.8:

复制代码
sudo find / -name "libcudnn_cnn_infer.so.8"

得到结果:

复制代码
/home/ai/miniconda3/lib/python3.7/site-packages/nvidia/cudnn/lib/libcudnn_cnn_infer.so.8
/home/ai/miniconda3/pkgs/pytorch-2.0.1-py3.10_cuda11.7_cudnn8.5.0_0/lib/python3.10/site-packages/torch/lib/libcudnn_cnn_infer.so.8
/home/ai/miniconda3/pkgs/pytorch-1.12.1-py3.7_cuda11.3_cudnn8.3.2_0/lib/python3.7/site-packages/torch/lib/libcudnn_cnn_infer.so.8
/home/ai/miniconda3/pkgs/pytorch-2.0.0-py3.10_cuda11.8_cudnn8.7.0_0/lib/python3.10/site-packages/torch/lib/libcudnn_cnn_infer.so.8

然后将找到的libcudnn_cnn_infer.so.8复制到上面通过ldconfig得到的路径:

复制代码
sudo cp -rf /home/ai/miniconda3/lib/python3.7/site-packages/nvidia/cudnn/lib/libcudnn_cnn_infer.so.8 /usr/local/cuda-11.3/targets/x86_64-linux/lib/

然后:

复制代码
sudo ldconfig

再通过ldconfig -p | grep cuda查看最新的输出:

复制代码
	libcudnn_cnn_infer.so.8 (libc6,x86-64) => /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
	libcudart.so.11.0 (libc6,x86-64) => /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudart.so.11.0
	libcudart.so.10.2 (libc6,x86-64) => /lib/libcudart.so.10.2
	libcudart.so (libc6,x86-64) => /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudart.so
	libcudadebugger.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudadebugger.so.1
	libcuda.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcuda.so.1
	libcuda.so.1 (libc6) => /lib/i386-linux-gnu/libcuda.so.1

就能看到 libcudnn_cnn_infer.so.8了。

相关推荐
orion5720 小时前
Missing Semester Class1:course overview and introduction of shell
linux
用户120487221611 天前
Linux驱动编译与加载
linux·嵌入式
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698031 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
七歌杜金房2 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia3 天前
linux curl命令详解_curl详解
linux
扛枪的书生3 天前
Linux 网络管理器用法速查
linux
Lihua奏3 天前
从单核到多核:CPU为什么不能再只靠提频变快
深度学习
拾年2753 天前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
顺风尿一寸3 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux