跳到主要内容

Linux ldconfig 命令 - 更新共享库缓存

介绍

ldconfig 命令用于管理 Linux 系统的动态链接库。

执行 ldconfig 命令,默认会在 /lib/usr/lib 目录以及动态库配置文件 /etc/ld.so.conf 内所列出的目录下,搜索出可共享的动态链接库(格式如 lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,就需要运行动态链接库的管理命令 ldconfig。

ldconfig 通常在系统启动时运行,当用户安装了一个新的动态链接库时,就需要手动运行该命令,以更新缓存文件。ldconfig 所做操作只与程序运行时有关,和编译过程没有关系,因此编译时需要加 -L 指定库路径的还得加上。

语法

ldconfig [-nNvXV] [-f conf] [-C cache] [-r root] directory...
ldconfig -l [-v] library...
ldconfig -p

选项

  • -v--verbose :用此选项时,ldconfig 将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字。
  • -n :用此选项时,ldconfig 仅扫描命令行指定的目录,不扫描默认目录(/lib、/usr/lib),也不扫描配置文件 /etc/ld.so.conf 所列的目录。
  • -N :指示 ldconfig 不重建缓存文件(/etc/ld.so.cache),若未用 -X 选项,ldconfig 照常更新文件的连接。
  • -X :指示 ldconfig 不更新文件的连接,若未用 -N 选项,则缓存文件正常更新。
  • -f CONF :指定动态链接库的配置文件为 CONF,系统默认为 /etc/ld.so.conf。
  • -C CACHE :指定生成的缓存文件为 CACHE,系统默认的是 /etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表。
  • -r ROOT :改变应用程序的根目录为 ROOT(是调用 chroot 函数实现的)。选择此项时,系统默认的配置文件 /etc/ld.so.conf,实际对应的为 ROOT/etc/ld.so.conf。如用 -r /usr/zzz 时,打开配置文件 /etc/ld.so.conf 时,实际打开的是 /usr/zzz/etc/ld.so.conf 文件。用此选项,可以大大增加动态链接库管理的灵活性。
  • -l :通常情况下,ldconfig 搜索动态链接库时将自动建立动态链接库的连接,选择此项时,将进入专家模式,需要手工设置连接,一般用户不用此项。
  • -p--print-cache :指示 ldconfig 打印出当前缓存文件所保存的所有共享库的名字。
  • -c FORMAT--format=FORMAT :指定缓存文件所使用的格式,共有三种:old(老格式),new(新格式)和 compat(兼容格式,此为默认格式)。
  • -V, --version :显示版本信息并退出。
  • -?--help--usage :显示帮助信息并退出。

示例

将 libfoo.so 共享库添加到系统标准库路径

$ cp /home/username/foo/libfoo.so /usr/lib
$ chmod 0755 /usr/lib/libfoo.so

更新共享库缓存列表

$ sudo ldconfig

更新完成后检查(从当前缓存文件的中搜索 libfoo.so 库)

$ ldconfig -p | grep foo
libfoo.so (libc6) => /usr/lib/libfoo.so