一个稍微有经验的Linux程序员都知道使用LD_LIBRARY_PATH 来临时设置加载器搜索动态链接库so的路径顺序。但另一个不为人知的环境变量是LD_DEBUG。这个变量可以提供非常详细的加载动态链接库的信息。
可以把LD_DEBUG设成以下值:
export LD_DEBUG=files # 显示库的依赖性和加载的顺序
export LD_DEBUG=bindings # 符号绑定
export LD_DEBUG=libs # 显示加载器查找库时使用的路径的顺序
export LD_DEBUG=versions # 版本依赖性
export LD_DEBUG=help # LD_DEBUG的帮助信息
试一下把LD_DEBUG设成以上值之一,再随便运行一个程序试试。
一个试验:
root@vicarious:/home/kamus/projs/horoscope/bins# export LD_DEBUG=libs root@vicarious:/home/kamus/projs/horoscope/bins# vim my.conf 24360: find library=libm.so.6 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libm.so.6 24360: 24360: find library=libtinfo.so.5 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libtinfo.so.5 24360: 24360: find library=libselinux.so.1 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libselinux.so.1 24360: 24360: find library=libacl.so.1 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libacl.so.1 24360: 24360: find library=libgpm.so.2 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/usr/lib/x86_64-linux-gnu/libgpm.so.2 24360: 24360: find library=libc.so.6 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libc.so.6 24360: 24360: find library=libdl.so.2 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libdl.so.2 24360: 24360: find library=libattr.so.1 [0]; searching 24360: search cache=/etc/ld.so.cache 24360: trying file=/lib/x86_64-linux-gnu/libattr.so.1
copyright ykyi.net