ldconfig命令

ldconfig命令

动态链接器的管理命令,依次搜索相关目录的动态链接库,lib**.so.*,创建动态链接装载程序,ld.so或ld-linux.so,所需的链接和缓存文件。

缓存文件

一般是/etc/ld.so.cache,主要记录了动态链接库的链接。动态链接装载程序会搜索该缓存文件,进行动态链接库的加载;也就是说,只有记录在该缓存文件中的动态链接库才能被使用。

命令/sbin/ldconfig -p查看缓存文件

ubuntu@ubuntu:~$ ldconfig -p
在缓存“/etc/ld.so.cache”中找到 1176 个库
	libzvbi.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzvbi.so.0
	libzvbi-chains.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzvbi-chains.so.0
	libzstd.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzstd.so.1
	libzmq.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzmq.so.5
	libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
	libz.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so
	libyelp.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyelp.so.0
	libyaml-0.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyaml-0.so.2
	libyajl.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyajl.so.2
	libx265.so.179 (libc6,x86-64) => /lib/x86_64-linux-gnu/libx265.so.179
	libx264.so.155 (libc6,x86-64) => /lib/x86_64-linux-gnu/libx264.so.155
	libxvidcore.so.4 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxvidcore.so.4
	libxtables.so.12 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxtables.so.12
	libxslt.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxslt.so.1
	libxshmfence.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxshmfence.so.1
	libxml2.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxml2.so.2
	libxmlsec1.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxmlsec1.so.1
	libxmlsec1-openssl.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxmlsec1-openssl.so.1

可以看到,缓存文件中每一条记录其实就是动态链接库的链接和路径描述。

搜索目录

如何依次搜索相关目录,主要是按照以下优先级进行
1)环境变量LD_PRELOAD定义的目录
2)环境变量LD_LIBRARY_PATH定义的目录
3)ld.so的配置文件,/etc/ld.so.conf定义的目录,可以用ldconfig -f xxx来重新设置
4)传统目录
4.1) 32位操作系统为/lib 和 /usr/lib
4.1) 64位操作系统为/lib64 和 /usr/lib64

猜你喜欢

转载自blog.csdn.net/lsshao/article/details/118576625