回答:
実行可能ファイルがあり、それがライブラリを取得している場所を確認するには、次を実行します。
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
フラグのように機能するユーティリティを探している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 ]