Windowsでは、依存関係ウォーカーと呼ばれるプログラムを使用して、アプリケーションが使用しているライブラリを調べました。Linuxで標準のバイナリを使用してこれを実現するにはどうすればよいか疑問に思いました。
ELF 32ビットLSB実行可能ファイル、Intel 80386、バージョン1(SYSV)、動的リンク(共有ライブラリを使用)、GNU / Linux 2.6.0用、削除
ありがとう。
Windowsでは、依存関係ウォーカーと呼ばれるプログラムを使用して、アプリケーションが使用しているライブラリを調べました。Linuxで標準のバイナリを使用してこれを実現するにはどうすればよいか疑問に思いました。
ELF 32ビットLSB実行可能ファイル、Intel 80386、バージョン1(SYSV)、動的リンク(共有ライブラリを使用)、GNU / Linux 2.6.0用、削除
ありがとう。
試す:
ldd executable
例えば:
[me@somebox ~]$ ldd /bin/ls
linux-gate.so.1 => (0xb7f57000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f4c000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7f32000)
libacl.so.1 => /lib/libacl.so.1 (0xb7f2b000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ddc000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7dc4000)
/lib/ld-linux.so.2 (0xb7f58000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7dc0000)
libattr.so.1 => /lib/libattr.so.1 (0xb7dbb000)
[me@somebox ~]$
これは共有ライブラリのみを報告することに注意してください。コンパイル時にどの静的ライブラリがリンクされているかを調べる必要がある場合、特に実行可能ファイルが「削除」されている(デバッグシンボルがない)ため、少し注意が必要です。
使用するldd
ldd /bin/sh
繰り返し ldd を呼び出すよりも生ではなく、MSVC の依存関係に少し似たものが必要な場合は、Visual-lddを試してください。4 年間更新されていませんが、ELF 形式が変更されていないことを考えると、まだ機能するはずです。それでも、これらのライブラリ内の個々のシンボルは表示されません。そのためにはnmのようなものが必要になります。残念ながら、そのための GUI ラッパーは知りません。
lddを使用します。バイナリが必要とするダイナミックライブラリが表示されます。
ライブラリ自体がさらに多くのライブラリを必要とする場合があることに注意してください。これらを取得するには、バイナリでlddを実行して取得したライブラリでlddを実行します。