動的リンカーはオペレーティングシステムによって自動的に呼び出されますか、それともELFファイルに含まれるコードによって呼び出されますか?

動的リンカーはオペレーティングシステムによって自動的に呼び出されますか、それともELFファイルに含まれるコードによって呼び出されますか?

/usr/bin/ld動的リンカーがELFファイルをロードするときにオペレーティングシステムによって自動的に呼び出されるのか、それともELFファイルに含まれるコードによって呼び出されるのかはわかりません。

ELFファイルのデバッグに使用されるときにr2実行される最初のコマンド(動的リンカーコードである必要があります)で停止しますが、そのコードがELFファイルの一部であるかどうかはわかりません。

ベストアンサー1

カーネルは動的ローダをロードします(これはありません/usr/bin/ld。参照)。静的リンカー、動的リンカー、ローダー、および動的ローダーの実行可能ELFファイルは何ですか?)。

ELFバイナリを実行すると、カーネルは動的にリンクされたバイナリに対して特定のELFバイナリローダを使用し、ELFヘッダで指定されたインタプリタを見つけてロードし、ターゲットバイナリを実行するように指示します。インタプリタは、必要なライブラリをロードし、未定義のシンボルを確認し、プログラムの開始アドレスにジャンプする動的ローダです。 (望むよりLinuxにはどのような実行ファイルがありますか?カーネルのバイナリロードに関する詳細情報です。 )

LWNに詳しく説明されている記事があります。プログラムの実行方法:ELFバイナリ

おすすめ記事