このあとの節では、CC コマンドで使用する規約、コンパイラのソース行指令など、コンパイラの使用に関連する内容について説明します。
CC [options] [source-files] [object-files] [libraries] |
options は、先頭にダッシュ (-) またはプラス記号 (+) の付いたキーワード (オプション) です。このオプションには、引数をとるものがあります。
通常, コンパイラオプションの処理は、左から右へと行われ、マクロオプション (ほかのオプションを含むオプション) は、条件に応じて内容が変更されます。ほとんどの場合、同じオプションを 2 回以上指定すると、最後に指定したものだけが有効になり、オプションの累積は行われません。次の点に注意してください。
すべてのリンカーオプション、ならびに -features、-I、l、L、-library、-pti、-R、-staticlib、-U、-verbose および -xprefetch オプションで指定した内容は蓄積され、上書きはされません。
-U オプションは、すべて -D オプションのあとに処理されます。
ソースファイル、オブジェクトファイル、およびライブラリは、コマンド行に指定した順にコンパイルとリンクが行われます。
次の例では、CC を使って 2 つのソースファイル (growth.C と fft.C) をコンパイルし、実行時デバッグを有効にして growth という名前の実行可能ファイルを作成します。
example% CC -g -o growth growth.C fft.C |
コンパイラがコマンド行に指定されたファイルをどのように処理するかは、ファイル名に付加された接尾辞で決まります。次の表以外の接尾辞を持つファイルや、接尾辞がないファイルはリンカーに渡されます。
表 2–1 C++ コンパイラが認識できるファイル名接尾辞
接尾辞 |
言語 |
処理 |
---|---|---|
C++ |
C++ ソースファイルとしてコンパイルし、オブジェクトファイルを現在のディレクトリに入れる。オブジェクトファイルのデフォルト名は、ソースファイル名に .o 接尾辞が付いたものになる。 |
|
C++ |
.c 接尾辞と同じ処理。 |
|
C++ |
.c 接尾辞と同じ処理。 |
|
C++ |
.c 接尾辞と同じ処理。 |
|
C++ |
.c 接尾辞と同じ処理。 |
|
C++ |
.c 接尾辞と同じ処理。 |
|
C++ |
C++ ソースファイルとして扱われるプリプロセッサ出力ファイル。.c 接尾辞と同じ処理。 |
|
アセンブラ |
ソースファイルをアセンブラを使ってアセンブルする。 |
|
アセンブラ |
C 言語プリプロセッサとアセンブラを使ってソースファイルをアセンブルする。 |
|
インライン展開 |
アセンブリ用のインラインテンプレートファイルを使ってインライン展開を行う。コンパイラはテンプレートを使って、選択されたルーチンのインライン呼び出しを展開します(インラインテンプレートファイルは、特殊なアセンブラファイルです。inline(1) のマニュアルページを参照してください)。 |
|
オブジェクトファイル |
オブジェクトファイルをリンカーに渡す |
|
静的 (アーカイブ) ライブラリ |
オブジェクトライブラリの名前をリンカーに渡す。 |
|
動的 (共有) ライブラリ |
共有オブジェクトの名前をリンカーに渡す。 |
C++ コンパイラでは、複数のソースファイルをコマンド行に指定できます。コンパイラが直接または間接的にサポートするファイルも含めて、コンパイラによってコンパイルされる 1 つのソースファイルを「コンパイル単位」といいます。C++ では、それぞれのソースが別個のコンパイル単位として扱われます。