スティーブンキットが書いたhttps://unix.stackexchange.com/a/448943/674
ld.so
共有ELFオブジェクトですが、インタプリタは必要ありません(.interpエントリはありません)。これは一般的なライブラリです(共有実行可能ファイルには常にインタプリタが必要です。そうしないと動的ではなく静的です)。
ELFオブジェクトは、エントリがある場合にのみ「共有実行ファイル」ですか .interp
?
「共有実行ファイル」とはどういう意味ですか? 「共有ライブラリ」と同じですか?
それとも、「共有実行可能ファイル」とは「部分的にリンクされた実行可能ファイル」を意味しますか? CSAPPから
linux> gcc -o prog2l main2.c ./libvector.so
これにより、実行時にlibVector.soに関連付けることができる形式で実行可能なオブジェクトファイルprog2lが生成されます。
...ローダーが実行可能ファイルをロードして実行すると、
prog2l
セクション7.9で説明されている技術を使用して部分的にリンクされた実行可能ファイルをロードします。prog2l
次に、それ自体が共有オブジェクトである動的リンカーのパス名を含むセクションが含まれているprog2l
ことを確認します.interp
(たとえば、ld-linux.so
Linuxシステムなど)。
答え1
.interpエントリがある場合にのみ、ELFオブジェクトは「共有実行可能ファイル」ですか?
厳密に言えばいいえ。共有ライブラリもできるからです。ただし、すべての「共有実行可能ファイル」(動的にリンクされている)には、ELFタイプに関係なくインタプリタエントリがEXEC
ありますDYN
。
「共有実行ファイル」とはどういう意味ですか? 「共有ライブラリ」と同じですか?
いいえ、それは同じではありません。 「動的にリンクされた実行可能ファイル」を作成する必要があります。
それとも、「共有実行可能ファイル」とは「部分的にリンクされた実行可能ファイル」を意味しますか?
これはそれを言うもう一つの方法です。