rah*_*hmu 16 c dynamic-linking
我正在寻找一个实用程序,它的行为方式与 相同which
,但要在 $LD_LIBRARY_PATH 中定义的目录中查找共享库 (*.so)?
如果您的库被正确缓存,您应该能够通过以下方式找到它:
ldconfig -p|grep "yourlibrary"
Run Code Online (Sandbox Code Playgroud)
如果您搜索发行版附带的库,您可以使用发行版方法在包中搜索文件。
这还将输出未安装但属于活动安装源的 rpm。
如果您有一个可执行文件并且您想查看它在哪里获取库,请运行
ldd /path/to/executable
Run Code Online (Sandbox Code Playgroud)
这将考虑默认搜索路径上的库以及此可执行文件的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}'
Run Code Online (Sandbox Code Playgroud)