
664
19
章
GCC
でコンパイル
オプションに加えて
-g
オプションを指定すると、結果のアセンブリ言語コードの出力に対
応するCソースコードが追加される。
$ gcc -g -o circle -Wa,-a=circle.list,-L circle.c
結果のリスティングファイル
circle.list
では一行ごとにコンパイラがプログラム
circle
のCの実行文をどのように翻訳したかを調べることができる。
19.3.1.4
リンク
リンカは複数のバイナリオブジェクトファイルを1つの実行ファイルに結合する。そのプ
ロセスでは、プログラムのさまざまなモジュールの間の外部参照をシンボル参照でのオブ
ジェクトの最終位置で置き換えて完了する。リンカはこれをアセンブラがシンボルテーブル
に提供したものと同じ情報を用いて行う。
さらに、リンカはプログラムで使用したC標準ライブラリ関数のコードも追加する。リ
ンクの文脈では、ライブラリは扱いやすいように1つの保
管ファイルに集めたオブジェクト
ファイルの集まりだ。
プログラムをライブラリにリンクするとき、使用する関数を含むライブラ
リ中のオブジェクトファイルが実際にプログラムにリンクされる。コンパ
イルしたオブジェクトファイルから自分専用のライブラリを作るには、
ar
ユーティリティを使う。情報についてはそのマニュアルを参照すること。
標準ライブラリ関数の多くは通常、ファイル
libc.a
(語尾の
.a
は「archive」(保管記録)
を意味する)または動的リンク共有版のファイル
libc.so ...