LD_DEBUG是glibc中的 loader 设置的一个环境变量,主要的应用便于定位加载库模块时出现的问题
以memcached安装过程中遇到的问题为例:
命令: /usr/local/bin/memcached -p 11211 -m 64m -vv
错误:/usr/local/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
使用LD_DEBUG显示库寻找信息
LD_DEBUG=libs /usr/local/bin/memcached -vv
15759: find library=libevent-2.0.so.5 [0]; searching
15759: search cache=/etc/ld.so.cache
15759: search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64 (system search path)
15759: trying file=/lib64/tls/x86_64/libevent-2.0.so.5
15759: trying file=/lib64/tls/libevent-2.0.so.5
15759: trying file=/lib64/x86_64/libevent-2.0.so.5
15759: trying file=/lib64/libevent-2.0.so.5
15759: trying file=/usr/lib64/tls/x86_64/libevent-2.0.so.5
15759: trying file=/usr/lib64/tls/libevent-2.0.so.5
15759: trying file=/usr/lib64/x86_64/libevent-2.0.so.5
15759: trying file=/usr/lib64/libevent-2.0.so.5
最后一行可以看出,memcached去/usr/lib64目录下寻找libevent-2.0.so.5,先定位libevent-2.0.so.5实际目录
命令:whereis libevent-2.0.so.5
结果:libevent-2.0.so: /usr/lib/libevent-2.0.so.5
这时候需要将做一个软连接
命令:ln -s /usr/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5