C89(1)

名称
c89 - POSIX.2 対応 C 言語コンパイラ

書式
c89 [-c] [-D name[=value]] ... [-E] [-g] [-I directory ...] [-L directory ...] [-o outfile] [-O] [-s] [-U name ...] operand ...

解説
これは p1003.2 標準にて要求されている、C 言語コンパイラの名称です。

c89 コンパイラは以下のオプションを受け付けます:

-c  コンパイル時にリンクエディットフェーズを実行しません。 生成されたオブジェクトファイルを一切削除しません。

-D name[=value]
    C 言語の #define ディレクティブ(前処理指令)で指定したかのように名前を定義します。 “=value” が与えられない場合、値 1 が使用されます。 p1003.2 に指定されているように変換するためには、ソース中または本オプションを使用して _POSIX_SOURCE を定義する必要があります。 -D オプションは -U オプションより低い優先度を持ちます。 すなわち name が -U と -D の両方で使用された場合、オプションの順序によらず、 name は未定義になります。 -D オプションは複数回指定可能です。

-E  全プリプロセッサディレクティブを展開し、 C 言語ソースファイルを標準出力へコピーします。 コンパイルは行いません。

-g  オブジェクトや実行ファイル中にシンボル情報を生成します。

-I directory
    絶対パス名ではないヘッダを検索するアルゴリズムを、 通常の場所を検索する前に directory で指定されるディレクトリを探すという方法に変更します。 ダブルクォート ("") で括られた名前のヘッダは、 #include 行を指定したファイルのディレクトリ、 次に -I オプションで指定したディレクトリ、 最後に通常の場所で探します。 アングルブラケット (<>) で括られた名前のヘッダは、 -I オプションで指定したディレクトリと 通常の場所のみで探します。 -I オプションで指定したディレクトリは指定した順番で探します。 -I オプションは複数回指定可能です。

-L directory
    -l で指定されるライブラリを検索するアルゴリズムを、 通常の場所を検索する前に directory で指定されるディレクトリを探すという方法に変更します。 -L オプションで指定したディレクトリは指定した順番で探します。 -L は複数回指定可能です。

-o outfile
    パス名 outfile をデフォルトの a.out の代りに使用し、実行可能ファイルを生成します。

-O  コンパイル時に最適化を行います。

-s  オブジェクトや実行ファイルを生成する時、 実行に不要な、シンボルおよびその他の情報を取り除きます (ストリップします)。

-U name
    name の初期定義を取り除きます。 -U オプションは複数回指定可能です。

オペランドは、パス名、もしくは -l ライブラリの形式です。 パス名オペランドが少なくとも一つは指定されなければなりません。 サポートされているオペランドの形式を以下に示します:

file.c
    C 言語ソースファイルであり、コンパイルされます。場合によっては リンクされます。 -c オプション使用時には、オペランドはこの形式でなければなりません。

file.a
    オブジェクトファイルのライブラリであり、 ar(1) によって生成され、直接リンクエディタに渡されます。

file.o
    オブジェクトファイルであり、 c89 -c によって生成され、直接リンクエディタに渡されます。

-l library
    liblibrary.a という名前のライブラリを探します。 ライブラリの名前が出てきた時点でそのライブラリ内部が検索されるので、 -l オペランドの位置は重要です。

関連項目
ar(1), cc(1)

規格
c89 コマンドは p1003.2 に準拠していると確信しております。