程序运行时通过动态链接器查找共享库(.so 文件),查找路径由配置文件和缓存共同决定。
1.关键工具与文件
| 名称 |
类型 |
作用 |
ldd <命令> |
命令 |
列出某可执行文件依赖的所有共享库 |
/etc/ld.so.conf |
配置文件 |
声明库搜索路径 |
/etc/ld.so.conf.d/*.conf |
配置文件 |
补充库搜索路径(推荐方式) |
/etc/ld.so.cache |
缓存文件 |
由 ldconfig 生成,加速运行时库查找 |
ldconfig |
命令 |
扫描路径、更新缓存、建立符号链接 |
2.标准操作流程
2.1排查库依赖问题
1 2 3
| ldd /usr/bin/some_command
|
2.2添加新库路径
1 2 3 4 5
| echo "/opt/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig -v
|
3.操作数据流
新增 .so 文件
│
▼
写入 /etc/ld.so.conf.d/xxx.conf
│
▼
ldconfig -v
│
▼
/etc/ld.so.cache 更新
│
▼
运行时自动找到新库
4.常见陷阱
- 编译安装软件后运行报
shared library not found → 路径已配但忘了 ldconfig
- 修改了
ld.so.conf 但没刷新 → 同上,必须执行 ldconfig
ldd 显示 not found,但文件确实在磁盘上 → 库路径未写入配置,或缓存未刷新
- 多版本库共存 → 用
ldconfig -p \| grep <库名> 查看缓存中实际加载的路径