Tryldd binary-exec
例:
~$ ldd /bin/bash
linux-gate.so.1 => (0x00606000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00943000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c5d000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x003e9000)
/lib/ld-linux.so.2 (0x00a41000)
直接必要なものを見つけるには:
readelf -d APP | grep NEEDED
ldd
他の場所で述べたように、実行時に必要なすべての直接および間接ライブラリが表示されます。 dlopen() で動的に開くことがあるため、これは完全なリストではないかもしれませんが、これは 99% の確率で機能するはずです。
ld と libtool は、コンパイル/リンク時に使用されます。アプリがあれば役に立ちません。
編集 あなたがOSXについて尋ねていた後の回答でわかりますが、Linuxツールに関する私の回答に追加したいと思います:
かなり前に言い忘れたことの 1 つ。あなたはバージョンについて尋ねました。 ldd
でもありません readelf
でもありません 「どのバージョン」の質問に答えます。探しているライブラリのファイル名が表示され、命名規則にバージョン情報が含まれている場合がありますが、これを強制するものはありません。シンボルはバージョン管理されている可能性があり、 nm
でさらに低いレベルにする必要があります これらを見るには、
もう 1 つの方法は、objdump を使用することです。
<ブロック引用>objdump -x "バイナリ" | grep が必要です
これは、このバイナリにのみ必要なすべての依存関係を示しています。とても便利です。