GNU/Linux >> Linux の 問題 >  >> Linux

バイナリがリンクされたライブラリを見つける

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 が必要です

これは、このバイナリにのみ必要なすべての依存関係を示しています。とても便利です。


Linux
  1. 私の家族のLinuxの話

  2. 私のお気に入りの3つのLinuxリリース

  3. 実行時にダイナミックライブラリの実行可能ファイルの負荷を確認する方法は?

  1. Linux – Linuxバイナリが位置独立コードとしてコンパイルされたかどうかをテストする方法は?

  2. Linux 3Dグラフィックライブラリ?

  3. Linux – Lddがパスを見つけられない、追加する方法は?

  1. Linux サーバーで Spfile がいつ作成されたかを確認する方法

  2. Linux ディストリビューションのバイナリ互換性

  3. (静的にリンクされた) DLL はメイン プログラムとは異なるヒープを使用しますか?