ldconfig 是 Linux 系统中一个重要的动态链接库管理工具,主要用于维护共享库的缓存和链接。下面我将详细解析其功能和使用方法。
更新共享库缓存:
/etc/ld.so.conf 中指定的目录和 /lib、/usr/lib 等标准目录/etc/ld.so.cache 文件,该文件包含所有找到的库及其路径维护符号链接:
libxyz.so.1 → libxyz.so.1.2.3)安装新库后更新系统:
sudo ldconfig
在安装新共享库后运行,使系统能够找到新安装的库
指定特定目录:
sudo ldconfig /path/to/libs
只处理指定目录中的库
显示当前缓存内容:
ldconfig -p
打印当前缓存中的所有库
| 选项 | 描述 |
|---|---|
-v |
详细模式,显示处理过程 |
-n |
只处理命令行指定的目录,不处理标准目录 |
-N |
不重建缓存,只处理符号链接 |
-X |
不处理符号链接,只重建缓存 |
-f <conf> |
使用指定的配置文件而非默认的 /etc/ld.so.conf |
-C <cache> |
使用指定的缓存文件而非默认的 /etc/ld.so.cache |
-r <root> |
更改根目录(用于chroot环境) |
/etc/ld.so.conf 文件包含 ldconfig 扫描的目录列表。通常包含:
include /etc/ld.so.conf.d/*.conf
表示还会包含 /etc/ld.so.conf.d/ 目录下所有 .conf 文件中的目录
/etc/ld.so.cache 二进制文件ld.so) 使用这个缓存快速定位库文件库找不到错误:
error while loading shared libraries: libxyz.so.1: cannot open shared object file
解决方法:
sudo ldconfig
查看程序依赖的库:
ldd /path/to/program
手动添加库路径:
echo "/path/to/libs" | sudo tee /etc/ld.so.conf.d/my-libs.conf
sudo ldconfig
ldconfig/etc/ld.so.conf.d/ 下的单独文件中LD_LIBRARY_PATH 环境变量临时指定库路径LD_LIBRARY_PATH,应正确配置系统库路径ldconfig 是维护 Linux 系统共享库环境的关键工具,正确使用可以避免许多库相关的运行时问题。