0

リンカーまたはローダーに関する多くの記事を読んでいますが、
オブジェクトモジュールの絶対参照を他のオブジェクトモジュール内の位置へのシンボリックリファレンスで置き換える責任を負うのは混乱します。 リンカは、他のオブジェクトモジュールまたはローダのシンボリックリファレンスをメインメモリのプログラムロード時に置き換えますか?シンボリック参照リンカーまたはローダーの責任者

+0

これは実験的に見ることができるはずです。オブジェクト(アセンブラ/コンパイラ)は、必要なものに対して記号的な名前を付ける責任があります。リンカはまた、リンカスクリプトで定義された項目について確かにいくつかの記号名を追加します。リンカはオブジェクト間でドットをグローバルに接続できる唯一のものですので、あるオブジェクトがexternを持ち、アイテムをリンクしながら更新します。 –

+0

ローダーがどこに入っているのかわからない、それは少し遅いものです。 –

+0

データ項目とそのシンボルの例を、あなたが興味のあるオブジェクトとバイナリに入れてください。 –

答えて

0

オブジェクトモジュール間のシンボル依存関係の解決は、従来、リンカの責任でした。リンカはすべてのオブジェクトファイルを調べ、すべてのシンボリックリファレンスを解決し、モノリシックな実行可能ファイルを作成します。しかし、このアプローチは、共有ライブラリ、すなわち、異なる実行可能ファイル間で共有可能であり、ロード時にプログラムにリンクされるオブジェクトモジュールを導入すると、分解されます。この作業を行うために、リンカの一部がローダに移され、依存関係を共有責任として解決します。リンカーは、オブジェクトファイルと静的ライブラリの間の依存関係を解決し、ローダーは実行可能ファイルと共有ライブラリの間の依存関係を解決します。

関連する問題