2015-12-23 16 views
7
[[email protected] bin]# ldd node 
     linux-vdso.so.1 => (0x00007fffd33f2000) 
     libdl.so.2 => /lib64/libdl.so.2 (0x00007f70f7855000) 
     librt.so.1 => /lib64/librt.so.1 (0x00007f70f764d000) 
     libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f70f7345000) 
     libm.so.6 => /lib64/libm.so.6 (0x00007f70f7043000) 
     libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f70f6e2d000) 
     libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f70f6c10000) 
     libc.so.6 => /lib64/libc.so.6 (0x00007f70f684f000) 
     /lib64/ld-linux-x86-64.so.2 (0x00007f70f7a61000) 

最初の行と最後の行はどういう意味ですか?彼らは通常のように見えませんlddプログラムの出力を解釈するには?

xxxx.so => /lib64/xxxxx.so (0xxxxxxxxxxxxxxxxxxxx) 

形式です。

+1

lddのmanページをお試しになりましたか?それはあなたに何をしているかを正確に伝えます。 –

+0

皆さん、この質問は「一般的なコンピューティングのハードウェアとソフトウェアについて」ではなく、「プログラミングのために主に使用されるツールに直接関わっています。 – 5gon12eder

+1

私はそれが何をしているのか知っていますが、私の場合(最初の行)でlinux-vdso.so.1がどこにあるのか、/ lib64/ld-linux-x86-64を指している矢印がないのはわかりません。 so.2(最後の行)。 –

答えて

3

ldd filenameには、ファイルで使用されるプログラム共有ライブラリが表示されます。

たとえばlibc.so.6はlibc共有オブジェクトバージョン6で、/ lib64にあり、そのメモリロケーションは0x00007f70f684f000です。

最後の行では、/ lib64の下にld-linux-x86-64.soバージョン2について語ります。このメンバーは共有ライブラリを見つけて読み込み、nodeが必要です。それらのライブラリを準備して実行します。だから、非常に粗末な言い方をすれば、ld-linux-x86-64はランナーです。 libc.so.6などがロードされ、lddはそれらの共有ライブラリとメモリロケーションの場所を示します。それが私の理解です。

6

最初の行はVDSOです。これは、vdso(7) manpageに詳細に記載されています。基本的にはカーネルに組み込まれ、新しいプロセスが実行されるたびに自動的にロードされる共有ライブラリです。そのため、右側にはファイルシステムのパスがありません - 何もありません!ファイルはカーネルのメモリにのみ存在します(正確には100%ではありませんが、詳細はmanページを参照してください)。

最後の行はELFインタプリタです。これはld.so(8) manpageに詳細に説明されています。完全なパスを持つ理由は、プログラムのフルパスがハードコードされているためです。右側にエントリがない理由は、(直接)とリンクされていないため、検索が実行されなかったためです。

$ readelf -l node | grep interpreter 
     [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] 
$ scanelf -i node 
ET_EXEC /lib64/ld-linux-x86-64.so.2 node 

他のすべての行は、あなたがリンクしているライブラリです。ファイルにreadelf -dを実行すると、DT_NEEDEDタグを見ることでそれらを見ることができます。これらのファイルには完全なパスがないため、ld.soは動的パス検索を実行する必要があります。 "libdl.so.2が必要なので、私がそれを探したときに見つけたのは/lib64/libdl.so.2です(アドレス0x00007f70f7855000でメモリにロードされました)"

関連する問題