next up previous contents
Next: 15.2 スコープ Up: 15.1 モジュール Previous: 15.1.1 プリプロセッサ

15.1.2 分割コンパイル

モジュール別にプログラムを書き、それらのモジュール間で関数宣言 などを共有する方法について理解した訳であるが、実際には 最終的にそれらを一つの実行ファイルとしなければならない。このために は、明示的にコンパイルとリンクを別個に実行しなければならない。

今、2つのモジュール test.cpp と test2.cpp があったとする(ファイルとしては もう一つ head.h もありますが)。これらのモジュールを機械語への翻訳のみ 行い、リンクは行わないようにするには次のように実行する。

    % g++  -c   test.cpp
    ...
    % g++  -c   test2.cpp
    ...

これによって、コンパイラは機械語に翻訳された test.o と test2.o を作成 する(オブジェクトファイルの拡張子は標準では .o となる)。

次に、コンパイルに成功していたならば、これらのオブジェクトおよび標準 ライブラリとのリンクを行う。

    % g++  test.o  test2.o

これによって、実行可能ファイル a.out が生成される。これまでに学んだように 実行ファイルに a.out 以外の名前をつけたい場合には以下のように -o オプションを用いる。

    % g++  -o test  test.o  test2.o



Noriyo Kanayama