「共有実行ファイル」とは何ですか?

「共有実行ファイル」とは何ですか?

スティーブンキットが書いた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.soLinuxシステムなど)。

ベストアンサー1

.interpエントリがある場合にのみ、ELFオブジェクトは「共有実行可能ファイル」ですか?

厳密に言えばいいえ。共有ライブラリもできるからです。ただし、すべての「共有実行可能ファイル」(動的にリンクされている)には、ELFタイプに関係なくインタプリタエントリがEXECありますDYN

「共有実行ファイル」とはどういう意味ですか? 「共有ライブラリ」と同じですか?

いいえ、それは同じではありません。 「動的にリンクされた実行可能ファイル」を作成する必要があります。

それとも、「共有実行可能ファイル」とは「部分的にリンクされた実行可能ファイル」を意味しますか?

これはそれを言うもう一つの方法です。

おすすめ記事