共有ライブラリのファイル名のリストを取得するための組み込みGNU Linuxはありますか?解析された出力について考えましたldconfig -p
。しかし、システム間の出力の一貫性は不明です。
私はこれが利用可能であることを既に知っていますが、find
リンカ/ローダにライブラリと場所のキャッシュがあることを考えると、何とかそれを使用する方が効率的です。さらに、リンカー/ローダーによって検索されたパスは、私が興味を持っている唯一のパスです。つまり、ldconfig
。
答え1
すべてをキャプチャするには、ファイルシステム全体のナビゲーションを実行する以外に選択肢はありません。ldconfig
標準パスのライブラリと検索するように設定された追加のパス(通常は定義されている/etc/ld.so.conf*
)だけがわかります。一般に、他のライブラリを見つけることができる疑いのある場所は制限がありませんが、$HOME
特に/opt
人々が直接アプリケーションを構築する場合です。
出力が信頼できない場合は、ldconfig -p
キャッシュを直接解析できます。バイナリですがstrings
、:を使用すると、すべてのゴミが削除されます(5なので/ lib /が一致します)。
strings -n5 /etc/ld.so.cache
私のシステムでは、両方とも同じ結果を提供し、それをすばやく確認しました。
a=$(ldconfig -p | awk -F'> ' '{print $2}' | sort); # get them to the same format
b=$(strings -n5 /etc/ld.so.cache | sort -u);
echo -e "$a\n$b\n$b" | sort | uniq -u
ldconfig -p
リスト内のライブラリのうち、キャッシュに記載されていないライブラリがあることを確認してください。何も返されません。