2009-07-13 29 views
7

Windowsでは、アプリケーションが使用しているライブラリを調べるために、dependency walkerというプログラムを使用しました。Linuxの依存関係の解決

ELF GNU/Linux 2.6.0用に、インテル80386、バージョン1(SYSV)、ダイナミックリンク(共有ライブラリを使用)、実行可能な32ビットLSBがどのように達成できるのか、私は思っていました。 、ストリップされました

ありがとうございました。

+0

http://stackoverflow.com/questions/1057234/discovery-of-dynamic-library-dependency-on-mac-os-linux – mark4o

答えて

14

試してみてください。たとえば

ldd executable 

:これは共有ライブラリのみを報告することを

[[email protected] ~]$ 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) 
[[email protected] ~]$ 

注意。コンパイル時に何の静的ライブラリがリンクされているかを知る必要がある場合、それは少し難解です。特に、実行ファイルが「取り除かれた」(デバッグシンボルなし)ために見えます。

5

使用ldd

ldd /bin/sh 
+0

Ha、ありがとうございました! – James

1

lddを使用してください。バイナリが必要とするダイナミックライブラリを表示します。

ライブラリ自体にはさらにライブラリが必要であることに注意してください。これらを得るには、バイナリ上でlddを実行することによって得たライブラリに対してlddを実行することができます。

3

反復的にlddを呼び出し、MSVCのように少し遅れたものが必要な場合は、Visual-lddを試してください。 4年後には更新されていませんが、ELF形式は変更されていないため、まだ動作するはずです。残念ながら、これらのライブラリの中に個々のシンボルは表示されません。そのためにはnmのようなものが必要ですが、そのためのGUIラッパーはわかりません。

関連する問題