リンカ・ローダと実行形式
リンカが行うシンボル解決の説明として正しいものはどれか。
- Aあるファイルで使われている関数や変数の名前を、別のファイルにあるその定義と対応づける
- Bソースコードの変数名を、短い名前に置き換えて読みにくくする
- C数学の記号を含む式を、数値に計算し直す
答えと解説を見る
正解:A. あるファイルで使われている関数や変数の名前を、別のファイルにあるその定義と対応づける
main.cでsum関数を呼び、sum.cでその中身を定義すると、main.oには「sumを参照する」、sum.oには「sumを定義する」という情報が入ります。リンカはすべてのオブジェクトファイルのシンボルテーブルを集めて、参照ごとに対応する定義を1つ見つけます。定義が見つからなければ「未定義の参照」、2つ以上あれば「多重定義」のエラーになります。
- A. 正しい。参照と定義を結びつけます。
- B. それは難読化で、リンカの仕事ではありません。
- C. シンボルは関数や変数の名前のことです。