[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 出力の種類の制御オプション

コンパイル過程は、四つの段階に分けることができる。プリプロセス、 コンパイルそのもの、アセンブル、それにリンクであり、必ずこの順番である。 前の三つの段階は個々のソースファイルに対して適用され、オブジェクトファイルの 生成で終わる。リンクでは、全てのオブジェクトファイル(新しくコンパイルされ、 入力としてしていされたもの)を組み合わせて、一つの実行形式ファイルを 作る。

指定された入力ファイル毎に、ファイル名のサフィックスからコンパイル過程の どれが実行されるかが決定される。

file.c

C ソースファイルであり、プリプロセスが必要である。

file.i

C ソースファイルであり、プリプロセスを行なってはいけない。

file.ii

C++ ソースファイルであり、プリプロセスを行なってはいけない。

file.m

Objective-C ソースファイルである。Objective-C のプログラムとして 動作させるには、ライブラリ ‘libobjc.a’ をリンクする必要があることに 注意。

file.h

C のヘッダファイル(コンパイルやリンクは行なわれない)。

file.cc
file.cxx
file.cpp
file.C

C++ のソースファイルで、プリプロセスが必要である。 ‘.cxx’ の最後の二文字は字面どおり ‘x’ でなければならない。 同じく、‘.C’ は字面どおりの大文字の C である。

file.s

アセンブラソースファイル。

file.S

アセンブラソースファイルで、プリプロセスが必要である。

other

オブジェクトファイルは、そのままリンクフェーズに渡される。 認識できないサフィックスを持たないファイル名も同じように扱われる。

-x’ オプションを指定することで入力の言語を明示的に指定することもできる。

-x language

後続の入力ファイルの言語を (コンパイラに、ファイル名のサフィックスからデフォルトを選択するのを まかせるのではなくて)、明示的に language と指定する このオプションは、次に ‘-x’ オプションが現れるまでの入力ファイルに 対して適用される。language に指定できる値は以下のとおり。

 
c  objective-c  c++
c-header  cpp-output  c++-cpp-output
assembler  assembler-with-cpp
-x none

言語を明示的に指定するのを取り止める。これ以降のファイルは、 ファイル名のサフィックスに従って(‘-x’ オプションが全く指定されなかった のと同じように)処理される。

コンパイル過程の一部分だけ実行したい場合は、‘-x’ (またはファイル名 サフィックス) を使って開始する段階を指定することが出来る。 どの段階で終了するかは、オプション ‘-c’、‘-S’、‘-E’ の どれか一つを使って指定する。組合せによっては(例えば、 ‘-x cpp-output -E’)、gcc は何もしないことがある。

-c

ソースファイルのコンパイルやアセンブルは行なうが、リンクは行なわない。 単にリンク段階を行なわないのである。この場合の最終的な出力は、 各ソースファイル毎のオブジェクトファイルという形になる。

デフォルトでは、オブジェクトファイル名は、ソースファイル名の サフィックス ‘.c’、‘.i’、‘.s’ 等を ‘.o’ に 置き換えたものになる。

認識できない入力ファイルで、コンパイルやアセンブルが要求されないものは 無視される。

-S

コンパイル本体の段階で終了する。アセンブルは行なわない。 出力は、指定されたアセンブラソースでない各入力ファイルに対して、 アセンブラコードファイル形式となる。

デフォルトでは、アセンブラファイル名は、ソースファイル名の サフィックス ‘.c’、‘.i’ 等を ‘.s’ に 置き換えたものになる。

コンパイルを必要としない入力ファイルは無視される。

-E

プリプロセス段階で終了する。コンパイラ本体は実行しない。 出力はプリプロセスされたソースコードの形式で、標準出力に 出力される。

プリプロセスを必要としない入力ファイルは無視される。

-o file

出力を指定されたファイル file に置く。 これは、生成される出力の種類によらない。実行形式ファイルでも、 オブジェクトファイルでも、アセンブラフィアルでも、 プリプロセス済の C コードでもかまわない。

出力ファイルは一つしか指定できないので、複数の入力ファイルがある場合に ‘-o’ を指定するのは、実行形式ファイルを出力とする場合しか 意味がない。

-o’ の指定がない場合は、実行形式ファイルは ‘a.out’ という名前で、 ‘source.suffix’ というソースファイルのオブジェクトファイルは、 ‘source.o’ という名前で、アセンブラファイルは ‘source.s’ という名前で作られ、プリプロセスした C のソースは、 標準出力に出力される。

-v

コンパイルの各段階で実行されるコマンドを標準エラー出力に 表示する。また、コンパイラドライバプログラム、プリプロセッサ、コンパイラ 本体のバージョン番号も合わせて表示する。

-pipe

コンパイルの各段階間での情報の受渡しに、一時ファイルではなく、 パイプを使う。これはアセンブラがパイプからの読み出しができないシステムでは 動作しない。もちろん、GNU アセンブラを使えば問題ない。

--help

gcc が理解するコマンド行オプションの説明を標準出力に表示する。 合わせて -v オプションも指定すると、--helpgcc が起動する色々なプロセスにも渡されので、渡されたプロセスは 受付可能なコマンド行オプションを表示することができる。 -W オプションを一緒に指定すると、説明が用意されていないコマンド行 オプションも表示される。


This document was generated using texi2html 1.78.