动态链接器的管理命令,依次搜索相关目录的动态链接库,lib**.so.*,创建动态链接装载程序,ld.so或ld-linux.so,所需的链接和缓存文件。
一般是/etc/ld.so.cache,主要记录了动态链接库的链接。动态链接装载程序会搜索该缓存文件,进行动态链接库的加载;也就是说,只有记录在该缓存文件中的动态链接库才能被使用。
命令/sbin/ldconfig -p查看缓存文件
1118 libs found in cache `/etc/ld.so.cache'
libz3.so.4 (libc6,AArch64) => /lib/aarch64-linux-gnu/libz3.so.4
libzvbi.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzvbi.so.0
libzvbi-chains.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzvbi-chains.so.0
libzstd.so.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzstd.so.1
libzmq.so.5 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzmq.so.5
libzmf-0.0.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzmf-0.0.so.0
libzbar.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzbar.so.0
libzapojit-0.0.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzapojit-0.0.so.0
libz.so.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libz.so.1
libz.so (libc6,AArch64) => /lib/aarch64-linux-gnu/libz.so
libytnef.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libytnef.so.0
libyelp.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libyelp.so.0
libyaml-0.so.2 (libc6,AArch64) => /lib/aarch64-linux-gnu/libyaml-0.so.2
libyajl.so.2 (libc6,AArch64) => /lib/aarch64-linux-gnu/libyajl.so.2
libx265.so.192 (libc6,AArch64) => /lib/aarch64-linux-gnu/libx265.so.192
libx264.so.160 (libc6,AArch64) => /lib/aarch64-linux-gnu/libx264.so.160
libxxhash.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxxhash.so.0
libxvidcore.so.4 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxvidcore.so.4
libxtables.so.12 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxtables.so.12
libxslt.so.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxslt.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
1 vim /etc/ld.so.conf
1 输入以下内容
include ld.so.conf.d/*.conf
/usr/local/ffmpeg/lib/
ldconfig
vim ~/.bashrc
export PATH=$PATH:/usr/local/ffmpeg/bin
source ~/.bashrc