ヘッダーを読み取るツールは、実行可能なLinux実行可能ファイルに必要なダイナミックライブラリの名前を出力しますか?ELFが必要とするダイナミックライブラリを知るには?
ソースからビルドしたばかりのバイナリ(それはGDBのPythonブランチです)または静的にリンクされているバイナリに、奇妙な依存関係があるかどうかを知る必要があります。私はmakefileを読むよりも簡単だと思います...
ヘッダーを読み取るツールは、実行可能なLinux実行可能ファイルに必要なダイナミックライブラリの名前を出力しますか?ELFが必要とするダイナミックライブラリを知るには?
ソースからビルドしたばかりのバイナリ(それはGDBのPythonブランチです)または静的にリンクされているバイナリに、奇妙な依存関係があるかどうかを知る必要があります。私はmakefileを読むよりも簡単だと思います...
/usr/bin/ldd
はあなたの友人です。使用法:
ldd /bin/ls
出力例:
linux-vdso.so.1 => (0x00007ffd14f79000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f2d875fc000)
libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f2d873f4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2d8702f000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2d86df1000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2d86bed000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2d8781f000)
libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f2d869e8000)
あなたは実行可能ファイルを信頼していない場合は、代わりにreadelf -d
を使用しています。 ldd
manページから:通常の場合には
、LDDは、リンカがライブラリ を表示させる1に設定LD_TRACE_LOADED_OBJECTS環境変数と標準のダイナミックリンカを(ld.so(8)を参照)を呼び出します依存関係。ただし、場合によっては、一部のバージョンのlddがプログラムを直接実行して依存情報を取得しようとする場合があることに注意してください。したがって、 は、信頼できない実行ファイルに対してlddを使用しないでください。これにより、任意のコードが実行される可能性があります。
例:
readelf -d /bin/ls | grep 'NEEDED'
サンプルouptut:ライブラリが他のライブラリに依存することができますので、あなたが必要とすること
0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1]
0x0000000000000001 (NEEDED) Shared library: [libacl.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
注:
$ locate libselinux.so.1
/lib/i386-linux-gnu/libselinux.so.1
/lib/x86_64-linux-gnu/libselinux.so.1
/mnt/debootstrap/lib/x86_64-linux-gnu/libselinux.so.1
は、いずれかを選択し、繰り返し:
readelf -d /lib/x86_64-linux-gnu/libselinux.so.1 | grep 'NEEDED'
出力例:
0x0000000000000001 (NEEDED) Shared library: [libpcre.so.3]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
のように。
も参照してください:
[Linux上で実行ファイルによって使用されるすべてのライブラリを表示]の可能複製(http://stackoverflow.com/questions/50159/show-all-libraries-used-by-executables-on-linux) –