名称
cc_bundled_pa: cc ― バンドルされている C コンパイラ
説明
このマンページは、バンドルされている C コンパイラについての説明です。ANSI
準拠 C コンパイラの HP-UX マンページの説明は、 cc(1) (オンラインのみ)
を参照してください。
この cc は、いくつかの種類の引き数を files として受け付けます。
| .c 接尾辞 | | .c で終わる名前の引き数は、 C
のソースファイルとして解釈します。各ファイルをコンパイルし、その結果のオブジェクトファイルは、ソースファイルと同じベース名で拡張子が .c ではなく .o のファイルになります。ただし、1 つの
C ファイルのコンパイルからリンクまでを 1 ステップで行うと、 .o ファイルは削除されます。 |
| .s 接尾辞 | | .s で終わる名前の引き数は、アセンブラ
ソースファイルとして解釈してアセンブルし、各 .s ファイルに対する .o ファイルを生成します。 |
| .i 接尾辞 | | .i で終わる名前の引き数は、 cpp による出力として解釈し
(後述の -P オプションの項を参照)、 cpp を実行しないでコンパイルします (cpp(1)を参照)。 各オブジェクトファイルのベース名は引き数と同じで、拡張子が .i ではなく .o なります。 |
| -lx 形式 | | -lx という形式の引き数を指定すると、リンカーはこの引き数を読み取った時点で未解決になっている外部参照を解決しようとして、ライブラリ libx.sl または libx.a を検索します。コマンド行中のライブラリ名指定を読み取ったときにそのライブラリを検索するので、 -l を指定する位置は重要です。あるファイルに未解決の外部参照が含まれる場合には、コマンド行ではそのファイルより 後ろ にその外部参照の定義を含むライブラリを指定する必要があります。詳細は、 ld(1) を参照してください。 |
| -l:libx.接尾辞 形式 | | -l:libx.suffix という形式の引き数を指定すると、リンカーはこの引き数を読み取った時点で未解決になっている外部参照を解決しようとして、ライブラリ libx.sl または libx.a を検索します (どちらのライブラリを検索するかは suffix で決まります)。これは -l オプションと同様ですが、 -Wl,-a オプションの現在の状態が重要でない点だけが異なります。 |
| その他の接尾辞 | | 上記以外の引き数 (.o や .a などで終わる名前)
は、実行可能プログラムを生成するために一緒にリンクされるリロケータブル
オブジェクトファイルとして解釈します。 |
引き数およびオプションは、 CCOPTS 環境変数やコマンド行を通じてコンパイラに渡すことができます。コンパイラは CCOPTS の値を読み取り、これらのオプションを縦線 (|)
より前に指定されているものと後ろに指定されているものの 2 つの組に分割します。1
組目のオプションは cc のコマンド行パラメーターの前に配置され、2
組目のオプションは cc のコマンド行パラメーターの後ろに配置されます。縦線がない場合には、すべてのオプションがコマンド行パラメーターの前に配置されます。例えば、 sh(1) 表記で次のように指定すると、
CCOPTS= -v | -lmalloc""
export CCOPTS
cc -w prog.c
コマンド行に次のように指定したのと等価になります。
TMPDIR 環境変数を設定すると、コンパイラはデフォルトの格納用ディレクトリ /var/tmp にではなく、この変数に設定されたディレクトリに一時ファイルを格納します。
オプション
バンドルされている C コンパイラが認識できるオプションは、下記のオプションだけです。
| -c | | コンパイルのリンク編集段階を抑止し、たとえ 1 つのプログラムだけをコンパイルする場合でも、各 .c ファイルに対応するオブジェクト
(.o) ファイルが生成されるようにします。C プログラムから生成されるオブジェクトファイルは、リンクしてからでないと実行できません。 |
| -C | | プリプロセッサが C スタイルのコメントを除去するのを防ぎます。詳細は、 cpp(1) を参照してください。 |
| -Dname=def | | '#define' を使って定義したかのように、プリプロセッサに name を定義します。詳細は、 cpp(1) を参照してください。 |
| -Dname | | |
| -E | | 指定された C またはアセンブリのファイルに対して cpp だけを実行し、その結果を標準出力に出力します。 |
| -Idir | | プリプロセッサがインクルードファイルを検索するために使用するアルゴリズムを変更して、 dir で指定したディレクトリ内も検索するようにします。詳細は、 cpp(1) を参照してください。 |
| -lx | | 『「説明」』 の項を参照してください。 |
| -L dir | | リンカーが libx.sl または libx.a を検索するアルゴリズムを変更します。 -L オプションを指定すると、 cc はデフォルトのロケーションを検索する前に dir で指定されたディレクトリ内を検索します。詳細は、 ld(1) を参照してください。 |
| -ooutfile | | リンカーの出力ファイル名 outfile を指定します。デフォルトのファイル名は a.out です。 |
| -P | | 指定された C ファイルに対して cpp だけを実行し、その結果を接尾辞が .i の対応するファイルに格納します。 -P オプションは cpp にも渡されます。 |
| +Rnum | | 先頭から num 個の レジスタ 変数だけが実際に レジスタ クラスを持つようにします。このオプションは、レジスタアロケーターが次のメッセージを発行した場合に使用してください。 |
| -s | | リンカーがシンボルテーブル情報を出力しないようにします。詳細は、 strip(1) を参照してください。このオプションを使用してリンクされたプログラムでは、シンボリックデバッガは使用できません。詳細は、 ld(1) を参照してください。 |
| -S | | 指定された C ファイルをコンパイルし、アセンブリ言語による出力を、接尾辞が .s の対応するファイルに格納します。 |
| -tx,name | | サブプロセス x を name で置き換えます。ここで、 x は 1 つまたは複数のサブプロセスを示す 1 つまたは複数の識別子です。このオプションは、次の
2 種類のモードで機能します。(1) x が 1 つの識別子である場合には、 name は新しいサブプロセスの絶対パス名を表します。(2) x が識別子の組である場合には、 name は標準接尾辞を連接すれば新しいサブプロセスの絶対パス名になるような接頭辞を表します。 x には次の値を 1 つまたは複数指定できます。 | p | | プリプロセッサ (標準接尾辞は cpp ) | | c | | コンパイラ (標準接尾辞は ccom ) | | a | | アセンブラ (標準接尾辞は as ) | | l | | リンカー (標準接尾辞は ld ) |
|
| -Uname | | プリプロセッサ内の name の初期定義をすべて削除します。詳細は、 cpp(1) を参照してください。 |
| -v | | 冗長モードを使用可能にします。このモードでは、コンパイル処理のステップごとの記述が標準エラーに出力されます。 |
| -V | | 実行した各サブプロセスがそのバージョン情報を標準出力にプリントします。 |
| -w | | 警告メッセージを抑止します。 |
| -Wx,arglist | | arglist 中のカンマで区切られた引き数 (1 つまたは複数) をサブプロセス x に渡します。 -W オプションを指定すると、標準ではサポートされない、処理系に固有のオプションをコンパイラのドライバーが認識できるようになります。例えば、 上のように指定すると、リンカーは共有ライブラリの代わりにアーカイブライブラリをリンクします。詳細は、 ld(1) を参照してください。 x には次のいずれかを指定できます。 上記以外のオプションを指定すると、警告が標準エラーに出力されます。 上記以外の引き数は、先に cc を実行して生成された
C 互換のオブジェクトプログラムか、または C 互換ルーチンのライブラリとみなされます。これらのプログラムは、指定されたコンパイルの結果とともに、指定された順序でリンクされて a.out という名前の実行可能プログラムが生成されます。 |
多言語化対応
環境変数
LANG は、表示されるメッセージの言語を決定します。
環境変数 LC_CTYPE の指定がないか、または設定値が空の文字列の場合には、指定がないかまたは値が空の各変数のデフォルトとして LANG の値が使用されます。 LANG を指定しないか、またはその値として空の文字列を設定すると、デフォルトの C (lang(5)を参照) が使用されます。不当な値が設定されているローカリゼーション変数があると、 cc はすべてのローカリゼーション変数の値が C になっているかのように動作します。 environ(5) を参照してください。
サポートされる国際的コードセット
シングルバイトおよびマルチバイトの文字コードセットがサポートされます。
診断
C 自身が生成する診断は、それだけを見ても意味が分かるようになっています。ときどき、プリプロセッサ、アセンブラ、またはリンクエディタがメッセージを生成する場合があります。
cc の処理完了前にエラーが発生すると、ゼロ以外の値が返されます。そうでなければ、ゼロが返されます。
例
下の例は、C の prog.c というファイルをコンパイルして prog.o というファイルを作成してから、 ld リンクエディタを実行して prog.o および procedure.o と /usr/ccs/lib/crt0.o 内のすべての
C 起動ルーチンおよび C のライブラリ libc.sl または libc.a のライブラリールーチンとをリンクします。この結果作成される実行可能プログラムは、 prog というファイルに格納されます。
cc prog.c procedure.o -o prog
警告
cc が認識できないオプションは、リンクエディタには渡されません。そのようなオプションをリンクエディタに渡すために、オプション -Wl,arg を使用できます。
デフォルトでは、C プログラムから返される値は完全にランダムです。特定の値が確実に返されるようにする方法は次の
2 通りだけです。 (1) 明示的に exit() を呼び出す。(exit(2)を参照) (2) 関数 main() に return expression; 構文を組み込む。
ファイル
| file.c | | 入力ファイル |
| file.o | | オブジェクトファイル |
| a.out | | リンクされて出力される実行可能ファイル |
| /var/tmp/ctm* | | コンパイラが使用する一時ファイル |
| /usr/ccs/bin/as | | アセンブラ (as(1)を参照) |
| /usr/ccs/bin/ld | | リンクエディタ (ld(1)を参照) |
| /usr/ccs/lib/crt0.o |
| | | 実行時起動ルーチン |
| /usr/lib/libc.a | | 標準 C ライブラリ (アーカイブバージョン)、 『『HP-UX
リファレンス』』 のセクション (3) を参照してください。 |
| /usr/lib/libc.sl |
| | | 標準 C ライブラリ (共有ライブラリバージョン)、 『『HP-UX
リファレンス』』 のセクション (3) を参照してください。 |
| /usr/include | | #include ファイル用標準ディレクトリ |
バンドルされている
C コンパイラのファイル
| /usr/ccs/bin/cc | | C ドライバー |
| /usr/ccs/lbin/ccom |
| | | C コンパイラ |
| /usr/lib/nls/msg/$LANG/cc.cat |
| | | C コンパイラのメッセージカタログ |
| /usr/ccs/lbin/cpp |
| | | C プリプロセッサ |
参照
システムツール
| as(1) | | アセンブリコードをマシンコードに変換します。 |
| cpp(1) | | C 言語プリプロセッサを実行します。 |
| ld(1) | | リンクエディタを実行します。 |
| cc(1) | | HP-UX の ANSI 準拠 C コンパイラです。 |
その他
| matherr(3M) | | 演算エラーをトラップします。 |
| fpgetround(3M) | | 浮動小数点モード制御関数です。 |
| strip(1) | | オブジェクトファイルからシンボルおよび行番号の情報を取り除きます。 |
| crt0(3) | | 起動ルーチンを実行します。 |
| end(3C) | | プログラムの最終位置のシンボルです。 |
| exit(2) | | プロセスを終了します。 |
指導書および標準文献
B. W. Kernighan and D. M. Ritchie, 『『The C Programming
Language』』, Prentice-Hall, 1978