$ file /lib/ld-linux.so.2
/lib/ld-linux.so.2: symbolic link to i386-linux-gnu/ld-2.27.so
$ readlink -f /lib/ld-linux.so.2
/lib/i386-linux-gnu/ld-2.27.so
$ file /lib/i386-linux-gnu/ld-2.27.so
/lib/i386-linux-gnu/ld-2.27.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=7a59ed1836f27b66ffd391d656da6435055f02f8, stripped
ld-2.27.so
それでは共有図書館ですか?
動的リンカー/ローダーと呼ばれます。そして「マン」の8節で言及されています。それでは実行可能ですか?
それでは、共有ライブラリという名前を付けたのはなぜですか*.so
?
そうでない場合は、これが動的リンカー/ローダーとして実行可能ファイルのように見え、manセクション8に記載されていることをどのように理解していますか?
ありがとうございます。
答え1
両方、これは完全に有効です。
- スタイルの命名体系はld.so
概して歴史的です。このスタイルの最初の動的リンカーは、SunOS 4と命名されました。ld.so
(どこかについての記録があるので少し探してみるとはっきりと説明します。) しかし、実行ファイルではなく共有ライブラリと命名するには、次のような妥当な理由があります。
- 共有ライブラリなどの実行可能ファイルを提供するために存在します(実行可能ファイルが実行されていない場合は目的はありません)。
- これは共有ELFオブジェクトですが、インタプリタは必要ありません(項目はありません
.interp
)。これは一般的なライブラリです(共有または動的にリンクされた実行可能ファイルには常にインタプリタが必要です。そうしないと静的にリンクされます)。
ELFでは、実行可能ファイルとライブラリの間の区別は多少曖昧です。エントリポイントおよび/またはインタプリタを持つすべてのELFオブジェクトは、他のプロパティに関係なく実行可能ファイルにすることができます。