Answers:
如果您有可执行文件,并且想查看它在哪里提取库,请运行
ldd /path/to/executable
这将说明默认搜索路径上的库以及此可执行文件的rpath中的库(如果有)。
在Linux上,为提高效率而缓存了系统库的路径。/sbin/ldconfig -p
显示缓存的内容(存储在中/etc/ld.so.cache
)。这是一个显示库位置的脚本:
#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
set -f
IFS=:
for d in $LD_LIBRARY_PATH; do
if [ -e "$d/$1" ]; then echo "$1"; fi
done
fi
/sbin/ldconfig -p |
awk -v needle="$1" '$1 == needle {sub(/.* => /, ""); print}'
如果您正在寻找一个实用工具,它的工作方式类似于gcc
的-lLIBNAME
flag,它查找一个名为的文件,libLIBNAME.so
那么您可能会使用一个小脚本来执行以下操作:
#!/bin/sh
ldpath="${LD_LIBRARY_PATH:-$(</etc/ld.so.conf)}"
notfound=1
for libdir in ${ldpath//:/ }; do
(test -f "$libdir/lib${1}.so" && echo "$_") && notfound=0
done
[ "$notfound" -eq 0 ]