Linux运行时so库的问题解决方案

1.查看so库是否存在

1.若不存在,则安装相应的包或源码编译相应的so库,并放到/usr/lib/usr/local/lib

执行刷新

sudo ldconfig

这会把 /etc/ld.so.conf 和 /etc/ld.so.conf.d/ 里定义的路径都重新注册到动态链接器缓存。

2.若存在,则可能自身找不到它依赖的库

ldd xxxxxx.so

查看是否有 not found 的依赖项。然后查找对应的包继续安装尝试解决

2.安装包后还是警告不存在

1.查看包中是否包含缺失的so库

dpkg -L libopenexr-dev | grep .so

Linux 在加载 .so 时默认只查:

  • /lib

  • /usr/lib

  • /usr/local/lib

有时so库的文件被装在了 /usr/lib/x86_64-linux-gnu/ 或者 /usr/local/lib,但 ld.so 找不到链接。

2.使用软链接

sudo ln -s /usr/lib/x86_64-linux-gnu/libIlmImf-2_5.so.25 /usr/lib/x86_64-linux-gnu/libIlmImf-2_5.so

3.查找它们的具体位置

find /usr -name "libavcodec.so*"

4.运行时指定 LD_LIBRARY_PATH

如果 .so 们都在 /usr/lib/x86_64-linux-gnu,可以在执行时临时告诉它找这里:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
  • 有些 .so 默认装在 /usr/lib/x86_64-linux-gnu/,但某些 Linux 发行版的默认 ld.so.conf 里没包含这一路径

  • 某些so库加载 .so 时只能依赖系统动态链接器找库,不会自己找绝对路径。

5.将缺失的so库复制到程序目录

posted @ 2025-07-25 10:40  SpringCore  阅读(136)  评论(0)    收藏  举报