実行可能ファイルが共有ライブラリを検索する場所を確認するには?

実行可能ファイルが共有ライブラリを検索する場所を確認するには?

ライブラリがあることを知っていますが、実行可能ファイルがライブラリを見つけることができません。検索場所を知ることで、ライブラリを見つけることが期待されるシンボリックリンクを作成できます。

$ ~/Apps/simutrans/simutrans
/home/dan/Apps/simutrans/simutrans: error while loading shared libraries: libbz2.so.1.0: cannot open shared object file: No such file or directory

$ locate libbz2
...
/lib/x86_64-linux-gnu/libbz2.so.1
/lib/x86_64-linux-gnu/libbz2.so.1.0
/lib/x86_64-linux-gnu/libbz2.so.1.0.4
/usr/lib/x86_64-linux-gnu/libbz2.a
/usr/lib/x86_64-linux-gnu/libbz2.so
...

明らかに、実行可能ファイルは/etc/ld.so.conf*ライブラリの検索には使用されません。もしそうなら、ライブラリを探します。

$ cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf 
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

readelf次の説明に従って、スキャン実行可能ファイルを使用してください。システムは動的ライブラリをどこで検索しますか?RUNPATH、ライブラリを探す必要がある場合は、表示される項目を表示しないでください。

ベストアンサー1

プログラムが現在のユーザー(setuidなどなし)で実行されていると仮定すると、次のことができます。strace次の情報を入手してください。

strace -o foo.out ~/Apps/simutrans/simutrans

そして、出力ファイルで呼び出しを見つけますopen

おすすめ記事