モジュール別にプログラムを書き、それらのモジュール間で関数宣言 などを共有する方法について理解した訳であるが、実際には 最終的にそれらを一つの実行ファイルとしなければならない。このために は、明示的にコンパイルとリンクを別個に実行しなければならない。
今、2つのモジュール test.c と test2.c があったとする(ファイルとしては もう一つ head.h もありますが)。これらのモジュールを機械語への翻訳のみ 行い、リンクは行わないようにするには次のように実行する。
% cc -c test.c ... % cc -c test2.c ... |
これによって、コンパイラは機械語に翻訳された test.o と test2.o を作成
する(オブジェクトファイルの拡張子は標準では .o
となる)。
次に、コンパイルに成功していたならば、これらのオブジェクトおよび標準 ライブラリとのリンクを行う。
% cc test.o test2.o |
これによって、実行可能ファイル a.out が生成される。これまでに学んだように
実行ファイルに a.out 以外の名前をつけたい場合には以下のように -o
オプションを用いる。
% cc -o test test.o test2.o |