一个稍微有经验的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/