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