リンカ・ローダと実行形式
静的ライブラリ(.aファイル)と一緒にリンクするとき、リンカが実行ファイルに組み込むものとして正しいものはどれか。
- Aライブラリの中のすべてのオブジェクトファイル
- Bライブラリのファイル名だけで、コードは組み込まない
- Cライブラリの中のオブジェクトファイルのうち、未定義の参照を解決するのに必要なものだけ
答えと解説を見る
正解:C. ライブラリの中のオブジェクトファイルのうち、未定義の参照を解決するのに必要なものだけ
静的ライブラリは、たくさんのオブジェクトファイルを1つにまとめたアーカイブです。リンカは、まだ定義が見つかっていないシンボルを定義しているオブジェクトファイルだけをアーカイブから取り出して組み込みます。そのため、標準ライブラリのように多くの関数を含むライブラリでも、使った関数の分だけ実行ファイルが大きくなります。
- A. すべて入れると実行ファイルがむだに大きくなります。
- B. 名前だけを記録するのは動的リンクです。
- C. 正しい。使わない部分は入りません。