Linuxで共有ライブラリファイル名のリストを取得するには?

Linuxで共有ライブラリファイル名のリストを取得するには?

共有ライブラリのファイル名のリストを取得するための組み込み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リスト内のライブラリのうち、キャッシュに記載されていないライブラリがあることを確認してください。何も返されません。

おすすめ記事