which
と同じように動作するユーティリティを探しています 、ただし、$ LD_LIBRARY_PATHで定義されたディレクトリで共有ライブラリ(* .so)を検索するには?
承認された回答:
実行可能ファイルがあり、ライブラリを取得する場所を確認したい場合は、
を実行します。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}'