C++ コンパイラパッケージは、フロントエンド (CC コマンド本体)、オプティマイザ (最適化)、コードジェネレータ (コード生成)、アセンブラ、テンプレートのプリリンカー (リンクの前処理をするプログラム)、リンクエディタから構成されています。CC コマンドは、これらの構成要素をそれぞれ自動的に起動します。ただしユーザーがコマンド行オプションを使用して自動起動以外のことを指定する場合を除きます。図 2-1 に C++ コンパイルの流れを示します。
これらの構成要素はいずれもエラーを生成する可能性があり、構成要素はそれぞれ異なる処理を行うため、エラーを生成した構成要素を識別することがエラーの解決に役立つことがあります。
次の表に示すように、コンパイラの構成要素への入力ファイルには異なるファイル名接尾辞が付いています。どのようなコンパイルを行うかは、この接尾辞で決まります。ファイル接尾辞の意味については、表 2-1を参照してください。
表 2-2 C++ コンパイルシステムの構成要素
構成要素 |
内容 |
使用時の注意 |
---|---|---|
ccfe |
フロントエンド (コンパイラプリプロセッサ (前処理系) とコンパイラ) |
|
iropt |
コードオプティマイザ (最適化) |
(SPARC) -xO[2-5]、-fast |
cg386 |
中間言語トランスレータ |
(x86) 必ず起動 |
inline |
アセンブリ言語テンプレートのインライン展開 |
(SPARC) .il ファイルを指定 |
mwinline |
関数の自動的なインライン展開 |
(x86) -xO4、-xinline |
fbe |
アセンブラ |
|
cg |
コード生成、インライン機能、アセンブラ |
(SPARC) |
codegen |
コード生成 |
(x86) |
cc_link |
テンプレートのリンクの前処理 |
|
ld |
従来のリンクエディタ |
|
ild |
インクリメンタルリンクエディタ |
-g、-xildon |