cc(1) FreeBSD 一般コマンドマニュアル

cc

前のページ 上に戻る 次のページ

cc




書式

       gcc [ option | filename ]...


注意

       このマニュアルに書かれた情報は GNU C コンパイラの完全な ド
       キュメンテーションからの抜粋であり、オプションの意味の記述
       にとどめます。

       このマニュアルはボランティアのメンテナンスが行なわれた時に
       のみ更新されるもので、常に最新の情報を示しているわけではあ
       りません。もしこのマニュアルと実際のソフトウェアの間に矛盾
       点があれば、正式なドキュメントである Info ファイルのほうを
       参照して下さい。

       このマニュアル中の古い記述が重大な混乱や不具合をきたすこと
       に なれば、このマニュアルページの配布は中止します。 GNU CC
       のメンテナンス作業の都合上、 Info ファイルを更新した時にマ
       ニュアルページも併せて更新することはできません。マニュアル
       ページは時代遅れであり、これに時間をかけるべきではな い と
       GNU プロジェクトでは考えています。

       完 全な最新のドキュメンテーションが必要な場合は、Info ファ
       イルの`gcc' またはマニュアルの Using and  Porting  GNU  CC
       (for  version 2.0) を参照して下さい。この双方は Texinfo の
       ソースファイル gcc.texinfo から生成されます。


解説

       C と C++ のコンパイラは統合されています。どちらの場合 も、
       入力ファイルは、プリプロセス、コンパイル、アセンブル、リン
       クの 4 つの処理ステージのうちの 1 つ以上のステージを踏んで
       処理されます。ソースファイル名の拡張子によってソースの言語
       を識別しますが、デフォルトの動作は、どちらの名前でコンパイ
       ラを使うかに依存しています:

       gcc    プリプロセス済みの (.i) ファイルを C のファイルと仮
              定し、C スタイルのリンクを行います。

       g++    プリプロセス済みの(.i) ファイルを C++ のファイル と
              仮定し、C++ スタイルのリンクを行います。

       ソースファイル名の拡張子は、その言語が何であるかと、どのよ
       うな処理が行われるべきかを示します:

       .c     C言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。
       .C     C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。
       .cc    C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。
       .cxx   C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。
       .m     Objective-C 言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。
       .i     プリプロセッサにかけられたC言語ソースです。コンパイラ、アセンブラにかけられます。
       .ii    プリプロセッサにかけられたC++言語ソースです。コンパイラ、アセンブラにかけられます。
       .s     アセンブリ言語ソースです。アセンブラにかけられます。
       (名前に .o のついたオブジェクトファイルや .a のついたア ー
       カイブを含む) は、コマンドラインに並べられた順番でリンカに
       渡されます。


オプション

       オプションは分割されていなければなりません。すなわち `-dr'
       は `-d -r 'とは異なった扱いを受けます。

       ほ と んどの `-f' と `-W' 形式のオプションには、 -fname-fno-name (または -Wname-Wno-name) の形式の、対照的 な
       表 現 があります。ここではデフォルトでない形式のみを示しま
       す。

       すべてのオプションを種類別に分けてまとめました。詳しい解説
       は以下の節で行ないます。


FreeBSD 固有のオプション

       -pthread
              ス レッド化ユーザプロセスに libc の代りに libc_r を
              リンクします。スレッド化ユーザプロセスにリンクさ れ
              る オブジェクトは -D_THREAD_SAFE 付きでコンパイルす
              る必要があります。

       -kthread
              スレッド化カーネルプロ セ ス に  libc   に 加 え て
              libpthread をリンクします。スレッド化カーネルプロセ
              スにリンクされるオブジェクトは -D_THREAD_SAFE 付 き
              でコンパイルする必要があります。

       B>全B>体B>的B>なB>オB>プB>シB>ョB>ン
              -c -S -E -o file -pipe -v -x language

       B>言B>語B>オB>プB>シB>ョB>ン
              -ansi -fall-virtual -fcond-mismatch
              -fdollars-in-identifiers -fenum-int-equiv
              -fexternal-templates -fno-asm -fno-builtin -fhosted
              -fno-hosted -ffreestanding -fno-freestanding
              -fno-strict-prototype -fsigned-bitfields
              -fsigned-char -fthis-is-variable
              -funsigned-bitfields -funsigned-char
              -fwritable-strings -traditional -traditional-cpp
              -trigraphs

       B>警B>告B>オB>プB>シB>ョB>ン
              -fsyntax-only -pedantic -pedantic-errors -w -W
              -Wall -Waggregate-return -Wcast-align -Wcast-qual
              -Wchar-subscript -Wcomment -Wconversion
              -Wenum-clash -Werror -Wformat -Wid-clash-len
              -Wimplicit -Wimplicit-int
              -Wimplicit-function-declaration -Winline
              -Wlong-long -Wmain -Wmissing-prototypes
              -Wmissing-declarations -Wnested-externs -Wno-import
              -fexpensive-optimizations -ffast-math -ffloat-store
              -fforce-addr -fforce-mem -finline-functions
              -fkeep-inline-functions -fmemoize-lookups
              -fno-default-inline -fno-defer-pop
              -fno-function-cse -fno-inline -fno-peephole
              -fomit-frame-pointer -frerun-cse-after-loop
              -fschedule-insns -fschedule-insns2
              -fstrength-reduce -fthread-jumps -funroll-all-loops
              -funroll-loops -O -O2 -O3 -O0 -Os

       B>プB>リB>プB>ロB>セB>ッB>サB>オB>プB>シB>ョB>ン
              -Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H
              -idirafter dir -include file -imacros file -iprefix
              file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P
              -Umacro -undef

       B>アB>セB>ンB>ブB>ラB>オB>プB>シB>ョB>ン
              -Wa,option

       B>リB>ンB>カB>オB>プB>シB>ョB>ン
              -llibrary -nostartfiles -nostdlib -static -shared
              -symbolic -Xlinker option -Wl,option -u symbol

       B>デB>ィB>レB>クB>トB>リB>オB>プB>シB>ョB>ン
              -Bprefix -Idir -I- -Ldir

       B>タB>ーB>ゲB>ッB>トB>オB>プB>シB>ョB>ン
              -b  machine -V version

       B>コB>ンB>フB>ィB>ギB>ュB>レB>ーB>シB>ョB>ンB>依B>存B>オB>プB>シB>ョB>ン
              M680x0 オプション
              -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881
              -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield
              -mrtd -mshort -msoft-float

              VAX オプション
              -mg -mgnu -munix

              SPARC オプション
              -mepilogue -mfpu -mhard-float -mno-fpu
              -mno-epilogue -msoft-float -msparclite -mv8
              -msupersparc -mcypress

              Convex オプション
              -margcount -mc1 -mc2 -mnoargcount

              AMD29K オプション
              -m29000 -m29050 -mbw -mdw -mkernel-registers
              -mlarge -mnbw -mnodw -msmall -mstack-check
              -muser-registers

              M88K オプション
              RT オプション
              -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
              -mfull-fp-blocks -mhc-struct-return -min-line-mul
              -mminimum-fp-blocks -mnohc-struct-return

              MIPS オプション
              -mcpu=cpu type -mips2 -mips3 -mint64 -mlong64
              -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
              -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
              -mno-memcpy -mno-mips-tfile -mmips-tfile
              -msoft-float -mhard-float -mabicalls -mno-abicalls
              -mhalf-pic -mno-half-pic -G num -nocpp

              i386 オプション
              -m386 -m486 -mpentium -mpentiumpro -mno-486
              -mcpu=cpu type -march=cpu type -msoft-float -mrtd
              -mregparm -msvr3-shlib -mno-ieee-fp
              -mno-fp-ret-in-387 -mfancy-math-387
              -mno-wide-multiply -mdebug-addr -mno-move
              -mprofiler-epilogue -reg-alloc=LIST

              HPPA オプション
              -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs
              -mno-shared-libs -mlong-calls -mdisable-fpregs
              -mdisable-indexing -mtrailing-colon

              i960 オプション
              -mcpu-type -mnumerics -msoft-float
              -mleaf-procedures -mno-leaf-procedures -mtail-call
              -mno-tail-call -mcomplex-addr -mno-complex-addr
              -mcode-align -mno-code-align -mic-compat
              -mic2.0-compat -mic3.0-compat -masm-compat
              -mintel-asm -mstrict-align -mno-strict-align
              -mold-align -mno-old-align

              DEC Alpha オプション
              -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float

              System V オプション
              -G -Qy -Qn -YP,paths -Ym,dir

       B>コB>ーB>ドB>生B>成B>オB>プB>シB>ョB>ン
              -fcall-saved-reg -fcall-used-reg -ffixed-reg
              -finhibit-size-directive -fnonnull-objects
              -fno-common -fno-ident -fno-gnu-linker
              -fpcc-struct-return -fpic -fPIC -freg-struct-return
              -fshared-data -fshort-enums -fshort-double
              -fvolatile -fvolatile-global -fverbose-asm


全体的なオプション

       -x language
              このオプションに続く入力ファイルの言語 を  language

       もし、4 つのステージ (プリプロセス、コンパイル、アセ ン ブ
       ル、リンク) のうちの一部のみが必要な場合は、 `-x' オプショ
       ン (またはファイル名の拡張子) を使用して gcc に対してど の
       ステージから開始するかを伝え、さらに `-c', `-S', `-E' のオ
       プションのうちのどれかを使用して gcc に対してどこで処理 を
       停止させるかを指定します。ここで、いくつかの組み合わせ (例
       えば `-x cpp-output -E') は gcc に対して何の動作も行なわな
       いように指定することになることに注意してください。

       -c      ソースファイルを、コンパイルまたはアセンブルまでは
              しますが、リンクはしません。コンパイラの出力は、 そ
              れ ぞれのソースファイルに対応したオブジェクトファイ
              ルとなります。

              デフォルトでは、GCC はオブジェクトファイルのファ イ
              ル名として、ソースファイルの拡張子 `.c', `.i', `.s'
              等を `.o' で置き換えたものを使用します。 -o   オ プ
              ショ ンを使用することによって、他の名前を指定するこ
              とも可能です。

              GCC は -c オプションを使用した場合は、理解できな い
              入 力ファイル (コンパイルやアセンブルを必要としない
              ファイル) を無視します。

       -S     コンパイルが終った所で処理を停止し、アセンブルは 行
              い ません。アセンブラコードではない入力ファイルが指
              定された場合は、出力はアセンブラコードのファイル に
              なります。

              デ フォルトでは、GCC はアセンブラファイルのファイル
              名として、ソースファイルの拡張子 `.c', `.i'   等 を
              `.s' で置き換えたものを使用します。 -o オプションを
              使用することによって、他の名前を指定することも可 能
              です。

              GCC  はコンパイルを必要としない入力ファイルを全て無
              視します。

       -E     プリプロセス処理が終了したところで停止します。コ ン
              パ イルはしません。出力はプリプロセス済みのソースコ
              ードであり、標準出力へと送られます。

              GCC はプリプロセスを必要としない入力ファイルを全 て
              無視します。

       -o file
              出力先を file に指定します。このオプションは GCC が
              実行可能ファイル、オブジェクトファイル、アセンブ ラ
              ファイル、プリプロセス済み C コードなどの、いかなる
              種類の出力を行なう場合にも適用可能です。

              出力ファイルは 1 つしか指定できないため、 `-o' を複

       -pipe  コンパイル時のステージの間のデータの受け渡しに、 テ
              ン ポラリファイルではなくパイプを使用します。いくつ
              かのシステムではアセンブラがパイプからの入力を受 け
              付 けることができないために、このオプションを指定す
              ると失敗します。 GNU アセンブラでは問題なく使用でき
              ます。



言語オプション

       以下のオプションは、コンパイラが受け付ける C の方言に関 す
       る制御を行ないます:

       -ansi  全ての ANSI 標準の C プログラムをサポートします。

              こ のオプションは、GNU C が持つ ANSI C との非互換な
              機能を全て排除します。例えば、asm,  inline,  typeof
              な どのキーワードや、unixvax などの現在使用して
              いるシステムを規定する定義済みマクロなどが抑制さ れ
              ま す。さらに、好ましくなくかつほとんど使用されない
              ANSI のトライグラフの機能を使用可能とし、さらに `$'
              を識別子の一部として使用できないようにします。

              代 替 キーワードである__asm__, __extension__, __in-
              line__, __typeof__ は、 `-ansi' が指定された場合 で
              も使用することが可能です。もちろん、これらを ANSI C
              プログラムで使用することが望ましくないのは当然で す
              が、`-ansi'  をつけてコンパイルされる場合でも、イン
              クルードされるヘッダファイル中にこれらが記述でき る
              ということは有用です。 __unix____vax__ などの代
              替定義済みマクロは、 `-ansi' を指定する場合でも指定
              しない場合でも、利用可能となっています。

              `-ansi' オプションは、ANSI 準拠でないプログラムを不
              必要に拒否することはありません。もしこのような動 作
              を 行なわせたい場合には`-ansi'に加えて-pedantic' オ
              プションを指定する必要があります。

              プリプロセッサ定義済みマク ロ  __STRICT_ANSI__   が
              `-ansi'  オプションを使用した際には定義されます。い
              くつかのヘッダファイルは、このマクロを識別して、AN-
              SI 標準が望まない関数やマクロの定義を抑制します。こ
              れは、それらの関数やマクロと同じ名前を別の目的で 使
              用するプログラムを混乱させないようにするためです。

       -fno-asm
              asm,  inline,  typeof  をキーワードとして解釈しませ
              ん。これらの単語は識別子として解釈されるようにな り
              ま す。 こ れ ら の 代用として __asm__, __inline__,
              __typeof__ が使用できます。 `-ansi' を指定する と、
              暗 黙のうちに `-fno-asm' を指定したものとみなされま
              す。
              効 になり、また、不審な main 宣言に対して警告を発す
              るようになります。

       -ffreestanding
              フリースタンディング実行環境 (freestanding environ-
              ment)  用にコンパイルを行います。これにより、`-fno-
              builtin' オプションが有効になり、また、 main に特別
              な条件は不要とみなします。

       -fno-strict-prototype
              `int  foo  ();'  のような、引数を指定しない関数宣言
              を、C 言語のように引数の数や型について何の仮定も し
              ないという扱いにします (C++ のみ)。通常はこのような
              宣言は、C++ では foo という関数が 1 つも引数をと ら
              ないことを意味します。

       -trigraphs
              ANSI C のトライグラフを使用可能とします。`-ansi' オ
              プションを指定すると、暗黙のうちに `-trigraphs'  を
              指定したものとみなされます。

       -traditional
              伝統的な C コンパイラのいくつかの特徴をサポートしま
              す。詳しくは GNU C のマニュアルを参照してください。
              以 前はここにそのリストの複製を載せていましたが、そ
              れらが完全に時代遅れになった時に我々に文句が来な い
              ように削除してしまいました。

              し かし、C++ のプログラムだけについて (C ではありま
              せん) 特記しておくことが 1 つあり ま す。  `-tradi-
              tional'  オプションは C++ に対して 1 つだけ特別な効
              果を持ちます。それは、 this への代入を許可すると い
              うものです。これは `-fthis-is-variable'オプションの
              指定が及ぼす効果と同一のものです。

       -traditional-cpp
              伝統的な C プリプロセッサのいくつかの特徴をサポート
              し ます。これは上に挙げた中で特にプリプロセッサに関
              係したものを含みますが、 `-traditional' の 指 定 に
              よっ て引き起こされる以外の効果を及ぼすことはありま
              せん。

       -fdollars-in-identifiers
              識別子中の `$' の使用を許可しま す  (C++   の み)。
              `-fno-dollars-in-identifiers'  を使用することによっ
              て、明示的に `$'の使用を禁止す る こ と も 可 能 で
              す。(GNU  C++ では、デフォルトで `$' を許可している
              システムと禁止しているシステムがあります)。

       -fenum-int-equiv
              int から列挙型への暗黙の変換を許可します  (C++   の
              み)。通常は GNU C++ は enum から int への変換は許可
              ン ファイル中にまとめて記述しておかなければなりませ
              ん。これはその必要とされる実体に対応した typedef 宣
              言 を行なうことによって実現できます。逆に、デフォル
              トのオプション `-fno-external-templates' でコンパイ
              ル し た場合には全てのテンプレートの実体は internal
              となります。

       -fall-virtual
              可能な限り全てのメンバ関数を暗黙のうちに仮想関数 と
              し て 扱 います。全てのメンバ関数 (コンストラクタと
              new , delete メンバ演算子を除きます) は、出現した時
              点でそのクラスの仮想関数として扱われます。

              こ れは、これらのメンバ関数への全ての呼び出しが仮想
              関数のための内部テーブルを参照して間接的に決定さ れ
              る ということを意味しません。特定の状況においては、
              コンパイラは与えられた仮想関数への呼び出しを直接 決
              定 できます。このような場合にはその関数呼び出しは常
              に直接呼び出しとなります。

       -fcond-mismatch
              条件演算子の第 2, 第 3 引数の型が異なる記述を許しま
              す。このような式の型は void となります。

       -fthis-is-variable
              this  への代入を許可します (C++ のみ)。ユーザ定義に
              よる記憶管理が可能となった現在では、 `this' への 代
              入 は時代遅れのものとなりました。従ってデフォルトで
              は、クラスのメンバ関数からの this への代入は不当 な
              も のとして扱われています。しかし、後方互換性のため
              に、 `-fthis-is-variable' を指定することによって こ
              の効果を得ることができます。

       -funsigned-char
              char  型を unsigned char のように符号無しとして扱い
              ます。

              それぞれのマシンには char がどちらであるべきかと い
              う デフォルトがあります。デフォルトで unsigned char
              であることもあれば、デフォルトで signed char である
              こともあります。

              理 想的には、可搬性のあるプログラムは、オブジェクト
              の符号の有無に依存する記述を行なう場 合 に は 常 に
              signed  char、もしくは unsigned char を使用すべきで
              す。しかし実際には多くのプログラムが単なる char  を
              用 いて記述されており、さらにそのプログラムを記述し
              た環境に依存して、符号付きである、あるいは符号無 し
              で あるという暗黙の仮定が行なわれています。このオプ
              ション、あるいはこの逆のオプションは、デフォルト と
              逆 の動作を行なわせることにより、これらのプログラム
              を正しく動作させることを可能にします。

       -fsigned-bitfields

       -funsigned-bitfields

       -fno-signed-bitfields

       -fno-unsigned-bitfields
              これらのオプションは、明示的に `signed' または `un-
              signed' の指定が行なわれていないビットフィールド に
              対 して、符号つきであるかあるいは符号なしであるかを
              制御します。デフォルトではこのようなビットフィー ル
              ドは符号つきとなっています。なぜなら、 int のような
              基本的な型は符号つきであるという点で、整合性がと れ
              るからです。

              ただし、`-traditional' を指定した場合は、ビットフィ
              ールドは常に全て符号無しであるとされます。

       -fwritable-strings
              文字列定数を書き込み可能なデータセグメント に 配 置
              し、同内容の文字列を 1 つの共有オブジェクトにする処
              理を行いません。これは、文字定数に書き込むことが で
              き ることを仮定した昔のプログラムとの互換性をとるた
              めに提供されています。`-traditional' オプションも同
              様の効果を含みます。

              文 字定数に書き込むという考えは非常によくない考えで
              す。"定数" はまさに定数であり、変化すべきではありま
              せん。



プリプロセッサオプション

       これらのオプションは C プリプロセッサを制御します。各 C ソ
       ースファイルは、実際にコンパイルする前に、C プリプロセッサ
       にかけられます。

       `-E'  オプションを使用すると、GCC はプリプロセス以外の処理
       を行いません。以下に示すオプションのうちのいくつかは、`-E'
       と同時に使用された時のみ意味をもちます。なぜならば、これら
       のオプションによって、実際のコンパイルには不適当なプリプロ
       セッサ出力が生成されるためです。

       -include file
              file を、通常の入力ファイルが処理される前に処理しま
              す。結果的に file に含まれる内容は、一番最初にコ ン
              パ イルされることになります。コマンドラインに指定さ
              れたすべての `-D' や `-U' オプションは、その記述 さ
              れた順番に関わらず常に `-include file' が処理される
              前に処理されます。全ての `-include'  や  `-imacros'
              オ プションは、それらが記述された順番通りに処理され
              ます。
              ディ レ ク トリ dir を第 2 インクルードパスに加えま
              す。第 2 インクルードパス中のディレクトリは、メイン
              イ ンクルードパス (オプション `-I' によって追加され
              ます) 中にヘッダファイルを探した結果発見できな かっ
              た場合に検索されます。

       -iprefix prefix
              prefix を、その後に続く `-iwithprefix' オプション用
              のプレフィックスとして使用します。

       -iwithprefix dir
              ディレクトリを第 2 インクルードパスに追加し ま す。
              ディレクトリ名は prefixdir を連結することによっ
              て得られます。ここで prefix は、`-iprefix' オプショ
              ンによって指定されたものです。

       -nostdinc
              ヘッ ダファイルのための標準のシステムディレクトリを
              検索しません。`-I' オプションによって指定したディレ
              ク トリ (またはカレントディレクトリ) のみを検索しま
              す。

              `-nostdinc' と `-I-'を使用することにより、インク ル
              ー ドファイルの検索パスを明示的に指定したディレクト
              リのみに限定することが可能となります。

       -nostdinc++
              ヘッダファイルの検索に、C++-固有の標準ディレクト リ
              を 用いません。ただしそれ以外の標準ディレクトリは検
              索されます。 (このオプションは `libg++' の構築に 使
              用されます。)

       -undef 標準でない定義済みマクロ(アーキテクチャフラグも含め
              て)を定義しません。

       -E     C プリプロセッサの処理のみを行います。指定された 全
              て の  C のソースファイルに対してプリプロセスを行な
              い、標準出力、または指定された出力ファイルに対し て
              出力を行います。

       -C      プリプロセッサに対してコメントの削除を行なわないよ
              うに指示します。 `-E' オプションとともに使用され ま
              す。

       -P     プリプロセッサに対して `#line' コマンドを生成しない
              ように指示します。 `-E' オプションとともに使用さ れ
              ます。

       -M  [ -MG ]
              プリプロセッサに対してmake で使用可能な、オブジェク
              ト間の依存関係を記述した出力を生成するように指示 し
              ま す。 そ れぞれのソースファイルに対して、プリプロ
              じディレクトリに存在するとみなします。これ は  `-M'
              と同時に指定しなければなりません。

       -MM  [ -MG ]
              `-M'  と似ていますが、`#include "file"'によってイン
              クルードされるユーザ定義のヘッダファイルのみを対 象
              に し た出力ファイルを生成します。`#include <file>'
              によってインクルードされるシステムヘッダファイル は
              省略されます。

       -MD    `-M' と似ていますが、依存情報は出力ファイル名の最後
              の `.o' を `.d' に置き換えたファイル名のファイル に
              対して出力されます。 `-MD' を指定したファイルのコン
              パイルもこれに加えて行なわれ、 `-M' のように通常 の
              コンパイルを抑制することはありません。

              Mach  のユーティリティである`md' は、これらの複数の
              `.d' ファイルを `make' コマンドによって使用できる単
              一 の依存記述ファイルへとマージするのに使用すること
              ができます。

       -MMD   `-MD' と似ていますが、ユーザヘッダファイルのみを 対
              象とし、システムヘッダファイルを無視します。

       -H      通常の動作に加えて、使用されたヘッダファイルの名前
              を表示します。

       -Aquestion(answer)
              questionに対するアサーション answer  を定義します。
              これは `#if #question(answer)' のようなプリプロセッ
              サ条件節によってテストされます。`-A-' は標準のア サ
              ーション(通常はターゲットマシンに関する情報を表して
              いる)を禁止します。

       -Dmacro
              マクロ macro に対して文字列 `1' を定義として与え ま
              す。

       -Dmacro=defn
              マクロ macrodefn として定義します。コマンドライ
              ン上の全ての `-D' オプションは `-U' オプションの 処
              理を行なう前に処理されます。

       -Umacro
              マ クロ macro の定義を無効にします。`-U' オプション
              は全ての `-D' オプションの処理が終了し た 後、`-in-
              clude' と `-imacros' オプションの処理の前に処理され
              ます。

       -dM    プリプロセッサに対して、プリプロセス終了時に有効 で
              あっ た マ ク ロ の定義のみを出力するように指示しま
              す。`-E' オプションとともに使用します。


リンカオプション

       これらのオプションは、コンパイラがオブジェクトファイル群を
       リ ンクして 1 つの実行可能ファイルを出力する際に使用される
       ものです。これらはコンパイラがリンクステップを行なわない場
       合には意味を持ちません。

       object-file-name
              特 別に認識される拡張子で終っていないファイル名は、
              オブジェクトファイル、またはライブラリであると認 識
              されます。(オブジェクトファイルとライブラリはリンカ
              がその内容を参照することで区別されます。) GCC が リ
              ン クステップを行なう場合は、これらのファイルはリン
              カへの入力として使用されます。

       -llibrary
              名前が library であるライブラリをリンク時に使用しま
              す。

              リ ンカは、標準のライブラリ用ディレクトリのリスト中
              から、実際のファイル名が `liblibrary.a' である ファ
              イ ルを検索します。リンカはこのファイルを、ファイル
              名で直接指定した場合と同様に使用します。

              検索するディレクトリには、いくつかの標準シ ス テ ム
              ディレクトリと、`-L' によって指定したディレクトリが
              含まれます。

              通常、この方法で発見されるファイルはライブラリ ファ
              イ ル、つまりいくつかのオブジェクトファイルをメンバ
              として含むアーカイブファイルです。リンカは、アー カ
              イ ブファイルの中を検索して、参照されているが定義さ
              れていないシンボルを定義しているメンバを探し出し ま
              す。 しかし、もしリンカがライブラリでなく通常のオブ
              ジェクトファイルを発見した場合は、そのオブジェク ト
              ファイルを通常の方法でリンクします。`-l' オプション
              を使用する場合とファイル名を直接指定する場合の違 い
              は、`-l' の場合が library を `lib' と `.a' で囲み、
              いくつものディレクトリを検索することだけです。

       -lobjc Objective C のプログラムをリンクする場合は、この 特
              別な -l オプションを指定する必要があります。

       -nostartfiles
              リ ンク時に、標準のシステムスタートアップファイルを
              使用しません。標準ライブラリは通常通りに使用され ま
              す。

       -nostdlib
              リ ンク時に、標準のシステムライブラリとスタートアッ
              プファイルを使用しません。指定したファイルのみが リ
              ンカに渡されます。
              共 有オブジェクトを構築する際に、グローバルなシンボ
              ルへの参照をバインドします。全ての解決できなかっ た
              参 照に対して警告を与えます (ただしリンクエディタオ
              プション `-Xlinker -z -Xlinker defs' によってこれを
              無 効 化した場合を除きます)。ごく少数のシステムでの
              み、このオプションはサポートされています。

       -Xlinker option
              オプション option をリンカに対して渡します。リン カ
              に 渡すシステム固有のオプションが、 GNU CC が理解で
              きないものである場合に利用できます。

              引数を持ったオプションを渡したい場合は、 `-Xlinker'
              を  2  度使用すれば可能です。1 度目でオプションを渡
              し、2 度目で引数を渡します。例えば `-assert defini-
              tions' を渡すには、 `-Xlinker -assert -Xlinker def-
              initions' のように記述すれば可能 で す。  `-Xlinker
              "-assert definitions"' のように指定した場合は正常に
              動作しません。なぜならこれは、文字列全体を 1 つの引
              数 として渡してしまい、リンカの期待する形式と異なっ
              てしまうからです。

       -Wl,option
              オプション option をリンカに渡します。option がコン
              マ を含む場合は、それらのコンマで複数のオプションと
              して分割されます。

       -u symbol
              シンボル symbol が未定義であるかのように振 舞 い ま
              す。 これは強制的にこのシンボルを定義しているライブ
              ラリモジュールをリンクするために使用します。`-u' は
              異 なったシンボルに対して複数回使用することができま
              す。これによって、さらに多くのライブラリモジュー ル
              を読み込ませることができます。


ディレクトリオプション

       これらのオプションは、ヘッダファイル、ライブラリ、コンパイ
       ラの一部を検索するディレクトリを指定するために使用さ れ ま
       す。

       -Idir  ディレクトリ dir を、インクルードファイルの検索する
              ディレクトリのリスト中に追加します。

       -I-    `-I-' オプション指定前に `-I' オプションによって 指
              定 された全てのディレクトリは、`#include "file"' の
              形式によってのみ検索されます。これらのディレクト リ
              は `#include <file>' によっては検索されません。

              ` -I-' オプション指定後に `-I' で指定したディレクト
              リは、全ての `#include' 命令によって検索されます。(
              通常は 全ての `-I' で指定されたディレクトリはこの方
              法で検索されます。)

       -Ldir  ディレクトリdir を `-l' による検索が行なわれる ディ
              レクトリのリストに加えます。

       -Bprefix
              こ のオプションはコンパイラ自身の実行形式、ライブラ
              リ、データファイルの検索場所を指定します。

              コンパイラドライバはサブプログラム `cpp', `cc1' (ま
              た は  C++ においては `cc1plus'), `as', そして `ld'
              を 1 つ、あるいはそれ以上起動します。コンパイラドラ
              イ バ は、 起動するプログラムのプレフィックスとして
              prefix に `machine/version/' をつけたものとつけない
              ものの双方を使用します。

              コ ン パ イラドライバは各サブプログラムの起動時に、
              `-B' プレフィックスの指定がある場合は、それを最初に
              利 用します。もしその名前が見つからなければ、または
              `-B' が指定されていなければ、ドライバは 2 つの標 準
              プ レ フィッ ク ス  `/usr/lib/gcc/'   と  `/usr/lo-
              cal/lib/gcc-lib/' を試します。このどちらにも見つ か
              ら な ければ、コンパイラドライバは、環境変数 `PATH'
              のディレクトリリストを利用して、そのプログラム名 を
              検索します。

              ラ ンタイムサポートファイル `libgcc.a' も、必要なら
              ば `-B' プレフィックスを用いて検索されます。もし そ
              こに見つからなければ、前記 2 つの標準プレフィックス
              が試みられますが、それで終りです。この場合はリン ク
              の 対象から外されます。ほとんどの場合、またほとんど
              のマシンでは、`libgcc.a' は実際には必要ではありませ
              ん。

              これと同じ効果を、環境変数 GCC_EXEC_PREFIX によって
              も得ることができます。もしこの環境変数が定義され て
              い れば、この値がプレフィックスとして同様に使用され
              ます。もし `-B' オプションと GCC_EXEC_PREFIX 環境変
              数の双方が存在した場合は、`-B' オプションが最初に使
              用され、環境変数は次に使用されます。


警告オプション

       警告は、本質的に間違いであるわけではありませんが、危険な構
       造を報告したり、エラーがあるかもしれないような部分を示唆す
       る診断メッセージです。

       以下のオプションは、GNU CC が生成する警告の量と種類を制 御
       します。

       -fsyntax-only
              コ ードの文法エラーをチェックしますが、一切出力は行
              いません。

              GNU 拡張や伝統的な C の特徴も、これに加えてサポート
              さ れます。このオプションを使用すれば、それらは拒絶
              されます。このオプションを使う理由はありません が、
              こ だわりのある人々を満足させるためにのみ存在してい
              ます。

              `-pedantic' は、始まりと終りとが `__' である代替 キ
              ー ワ ー ド の 使用については、警告しません。同様に
              __extension__ に続く表現についても警告しません。 し
              か し、システムヘッダファイルのみがこの抜け道を使用
              すべきであり、アプリケーションプログラムはこれを 避
              けるべきです。

       -pedantic-errors
              `-pedantic'  と似ていますが、警告のかわりにエラーを
              出します。

       -W     以下のイベントに対して、特別な警告メッセージを表 示
              します。

          o   volatile  でない自動変数が longjmp の呼び出しによっ
              て変更され得る場合です。これらの警告は、最適化コ ン
              パイルの時のみ問題になり得ます。

              コ ンパイラは setjmp の呼び出しのみを見ています。コ
              ンパイラは、どこで longjmp が呼び出されるかを知るこ
              と はできません。実際には、シグナルハンドラはコード
              中の任意の場所で longjmp を呼び出すことができます。
              従って、実際には longjmp への呼び出しが危険な部分か
              らはおこなわれていないために問題のないプログラム で
              あっても、警告が発せられることになります。

          o   関 数が、値を伴ってリターンする場合と、値を伴わずに
              リターンする場合の両方が起こりうる場合です。 (関 数
              の 最後を抜けていくことは、値を伴わずに関数をリター
              ンするとみなされます。) 例えば、次の関数がこの種 類
              の警告を引き起こします。

              foo (a)
              {
                if (a > 0)
                  return a;
              }


              あ る関数 (abortlongjmp を含む) が決してリターン
              しないということを GNU CC が理解できないために、 に
              せの警告が発生するかもしれません。

          o   式 文 (expression-statement) またはコンマ式の左部分
              が一切の副作用を含まない場合です。警告を抑制する に
              は、 使用しない式を void にキャストして下さい。例え
              -Wimplicit-int および  -Wimplicit-function-declara-
              tion と同じです。

       -Wmain main 関数が不審な型で宣言あるいは定義されている場合
              に警告します。通常、main は外部リンケージを 持 ち、
              int を返し、0 個または 2 個の引数をとる関数です。


       -Wreturn-type
              関数の戻り値の型が、デフォルトである int に定義され
              た時に常に警告します。また、戻り値の型が voidでない
              関 数内に、戻り値のない return 文がある場合にも常に
              警告します。

       -Wunused
              ローカル変数が宣言されたにも関わらず使用されてい な
              い 場合、静的に宣言された関数の実体が定義されていな
              い場合、計算結果が明らかに利用されていない場合に 常
              に警告します。

       -Wswitch
              switch 文がインデックスとして列挙型をとっている時、
              その列挙型中のいくつかの値に対する case が欠けて い
              る場合に常に警告します。(default ラベルが存在する場
              合、この警告は出ません。) このオプションを使用し た
              場 合には、列挙型の範囲を越えた case ラベルも、常に
              警告されます。

       -Wcomment
              コメントの開始文字列 `/*' がコメント中に現れた時 に
              常に警告します。

       -Wtrigraphs
              ト ライグラフの出現を常に警告します (トライグラフが
              使用可能であると仮定します)。

       -Wformat
              printf, scanf などへの呼び出しに対して、与えられ た
              引 数が、フォーマット文字列の指定を満足する型を持っ
              ているかを検査します。

       -Wchar-subscripts
              配列の添字の型が char であった場合に警告します。 こ
              れ はよくある間違いのもとです。いくつかのマシンにお
              いてはこの型が符号付きであることを、プログラマは し
              ばしば忘れてしまいます。

       -Wuninitialized
              初期化されていない自動変数が使用されています。

              こ れらの警告は、最適化コンパイルを行なう時のみ発生
              します。なぜなら、コンパイラは最適化を行なう時に の
              て 下さい。このような計算は、警告が表示される前にデ
              ータフロー解析によって削除されます。

              これらの警告をオプションにした理由の一つは、GNU  CC
              が まだあまり賢くなくて、あるコードが一見間違いを含
              むかのように見えてもそれは実は正しいものかもしれ な
              い、 ということを GNU CC が理解できない、というもの
              です。ここにその 1 つの例を挙げます。

              {
                int x;
                switch (y)
                  {
                  case 1: x = 1;
                    break;
                  case 2: x = 4;
                    break;
                  case 3: x = 5;
                  }
                foo (x);
              }

              もし y の値が常に 1, 2 あるいは 3 である限りは x は
              常 に初期化されます。しかし GNU CC はこれを知ること
              はできません。もう 1 つの一般的な例を挙げます。

              {
                int save_y;
                if (change_y) save_y = y, y = new_y;
                ...
                if (change_y) y = save_y;
              }

              これはバグを含みません。なぜなら save_y は、その 値
              が設定された時のみ使用されるからです。

              い くつかのにせの警告は、使用している決してリターン
              しない関数全てに対して volatile と宣言する こ と に
              よって防ぐことが可能です。

       -Wparentheses
              あ る特定の文脈中で括弧が省略されていた場合に警告し
              ます。

       -Wtemplate-debugging
              C++ プログラムにおいてテンプレートを使用している 際
              に、デバッグが完全に可能でない場合を警告します (C++
              のみ)。

       -Wall  全ての上に挙げた `-W' オプションを結合した も の で
              す。 これらのオプションは全て、たとえマクロとの組み
              合わせであっても、避けたほうがいいと我々が推奨す る
              したが、ANSI C においては定数の一部として扱わ れ ま
              す。

          o   ブ ロッ ク 内で外部宣言であると宣言され、かつそのブ
              ロックの終端の後で使用されている関数です。

          o   オペランドとして long 型をとる switch 文です。


       -Wshadow
              ローカル変数が他のローカル変数を隠している時に常 に
              警告します。

       -Wid-clash-len
              2 つの全く別の識別子の最初の len 文字が一致した時に
              警告します。これはある種の旧式なおばかさんコンパ イ
              ラ でコンパイルされ得るプログラムを作る場合に役に立
              ちます。

       -Wpointer-arith
              関数型や void の "サイズ" に依存するものを全て警 告
              します。GNU C はこれらに対して、サイズ 1 を割り当て
              ています。これは void * ポインタと関数へのポイン タ
              における計算を簡便にするためです。

       -Wcast-qual
              ポ インタが、型修飾子が削除されるようにキャストされ
              る全ての場合に警告します。例えば const char * を 普
              通の char * にキャストした場合に警告がなされます。

       -Wcast-align
              ポ インタのキャストにおいて、そのターゲットに要求さ
              れる境界条件が大きくなるようなキャストを全て警告 し
              ます。例えば char *int * へとキャストされると、
              整数が 2、あるいは 4 バイト境界でしかアクセスできな
              いマシンにおいては警告が発せられます。

       -Wwrite-strings
              文 字 定 数に対して、型 const char[length] を与え、
              非-constchar * ポインタへのアドレスのコピーに対
              し て警告するようにします。この警告は、宣言とプロト
              タイプにおいて const の使用を非常に注意深くおこなっ
              て いさえすれば、文字列定数に書き込みをしそうなコー
              ドをコンパイル時に発見することを助けますが、そう で
              な い場合は有害無益な指定です。これが、我々がこの警
              告を `-Wall' のリクエストに含めなかった理由です。

       -Wconversion
              同じ引数が与えられた時に、プロトタイプが存在する 場
              合 とプロトタイプが存在しない場合とで、異なった型変
              換を引き起こす場合について警告します。これは固定 小
              数 点から浮動小数点への変換やその逆、デフォルトの動

       -Wmissing-declarations
              グ ローバルな関数を、その前にプロトタイプ宣言をせず
              に定義した場合に警告します。この警告は、たとえそ の
              定 義自身がプロトタイプを含んでいたとしても発生しま
              す。この警告の目的は、ヘッダファイル中にグローバ ル
              関数の定義を忘れることを防ぐことにあります。

       -Wredundant-decls
              同 一スコープ中で複数回、同一対象を宣言した場合に、
              たとえそれが正当で何も変化させない場合であっても 警
              告します。

       -Wnested-externs
              関数内で extern 宣言を行なった場合に警告します。

       -Wenum-clash
              異なる列挙型の間で変換を行なった際に警告します (C++
              のみ)。

       -Wlong-long
              long long 型が使用されている場合に警告します。こ れ
              は デフォルトです。この警告メッセージを抑止するには
              `-Wno-long-long' フラグを用いて 下 さ い。 フ ラ グ
              `-Wlong-long'   お よび `-Wno-long-long' は、フラグ
              `-pedantic' 使用時のみ考慮されます。

       -Woverloaded-virtual
              (C++ のみ。) 導出クラスにおいて、仮想関数の定義は基
              底 クラスで定義された仮想関数の型の記述と一致してい
              なければなりません。このオプションを使用すること に
              よっ て、基底クラスにおける仮想関数と同一の名前を持
              ち、基底クラスのいかなる仮想関数とも異なった型の 記
              述 を 持 つ関数に対して警告が行われます。これによっ
              て、導出クラスが仮想関数を定義しようとして失敗す る
              場合を警告することができます。

       -Winline
              関 数 が イ ン ライン宣言されている、あるいは -fin-
              line-functions オプションが与えられている場合に、関
              数をインライン展開できなかった場合に警告します。

       -Werror
              警 告をエラーとして扱います。警告の後にコンパイルを
              中断します。


デバッグオプション

       GNU CC は、ユーザのプログラムや GCC の双方をデバッグするた
       めに、多くのオプションを備えています。

       -g      オペレーティングシステムのネイティブのフォーマット
              (stabs, COFF, XCOFF, DWARF) でデバッグ情報を生成 し
              ま す。GDB はこのデバッグ情報に基づいて動作すること
              `-O' とともに使用することを許しています。最適化され
              た コードが通る近道は、時には驚くべき結果を生み出す
              かもしれません。定義したはずの変数が存在しなかっ た
              り、 制御の流れが予想もしなかった場所に移動したり、
              結果が定数とわかる計算や、結果がすでに手元にある 文
              は 実行されなくなり、ある文がループの外に追い出され
              て別の場所で実行されたりします。

              それにも関わらず、このオプションは最適化された出 力
              の デバッグを可能としています。これによって、バグを
              含むかもしれないプログラムに対してオプティマイザ を
              使用することができるようになります。

       以下のオプションは、GNU CC を 1 つ以上のデバッグフォーマッ
       トを扱えるように作成してある場合に有益です。

       -ggdb  (もしサポートされていれば)ネイティブのフォーマッ ト
              で デバッグ情報を生成します。これは可能な限りの全て
              の GDB 拡張を含みます。

       -gstabs
              (もしサポートされていれば) stabs フォーマット で デ
              バッ グ 情報を生成します。ただし GDB 拡張は含みませ
              ん。このフォーマットはほとんどの BSD システム 上 の
              DBX で利用できるフォーマットです。

       -gstabs+
              ( も しサポートされていれば) stabs フォーマットでデ
              バッグ情報を生成します。ただし GNU デバッ ガ  (GDB)
              でしか理解できない GNU 拡張を使用します。この拡張を
              使用すると、他のデバッガでは、クラッシュやプログ ラ
              ムが読めなくなるなどの影響がおそらく出ます。

       -gcoff ( サポートされていれば) COFF フォーマットでデバッグ
              情報を生成します。これは、System V Release 4 より前
              の  ほとんどの System V 上の SDB で利用できるフォー
              マットです。

       -gxcoff
              (サポートされていれば) XCOFF フォーマットでデバッグ
              情報を生成します。これは IBM RS/6000 システムにおい
              て DBX デバッガによって使用されるフォーマットです。

       -gxcoff+
              ( も しサポートされていれば) XCOFF フォーマットでデ
              バッグ情報の生成を行います。ただし、GNU  デ バッ ガ
              (GDB)   によってのみ理解され得る GNU 拡張を使用しま
              す。これらの拡張を使用すると、他のデバッガに対し て
              は クラッシュやプログラムを読みとり不能にするなどの
              影響を及ぼし得ます。

       -gdwarf
       -ggdblevel
       -gstabslevel
       -gcofflevel -gxcofflevel

       -gdwarflevel
              デバッグ情報を要求しますが、同時に level によってど
              の 程度の情報が必要かを指定します。デフォルトのレベ
              ルは 2 です。

              レベル 1 は、デバッグを予定しないプログラムの部分に
              対 してバックトレースを生成するに十分な最低限の情報
              を生成します。これは関数と外部変数の記述を含みま す
              が、ローカル変数や行番号に関する情報は含みません。

              レベル 3 はプログラムに含まれる全てのマクロ定義など
              の特別な情報を含みます。いくつかのデバッガは  `-g3'
              の使用によってマクロの展開をサポートします。

       -p      プログラム prof によって使用されるプロファイル情報
              を書き込む特別なコードを生成します。

       -pg    プログラム gprof によって使用されるプロファイル情報
              を書き込む特別なコードを生成します。

       -a      基本ブロックのプロファイル情報を書き込む特別なコー
              ドを生成します。これはそれぞれのブロックが何回実 行
              さ れたかを記録します。このデータは tcov のようなプ
              ログラムによって解析されます。ただし、この デ ー タ
              フォ ーマットは tcov が期待するものとは異なっていま
              す。最終的には、GNU gprof が処理できるように拡張 さ
              れるべきです。

       -ax    ファイル `bb.in' から基本ブロックプロファイルパラメ
              ータを読み出し、ファイル `bb.out' にプロファイル 結
              果 を 書 き 出 すための、特別なコードを生成します。
              `bb.in' は関数のリストを保持しています。このリス ト
              に 含まれる関数に入ると、プロファイリングがオンにな
              ります。最外側関数を抜けると、プロファイリングは オ
              フになります。関数名が `-' で始まっている場合、その
              関数はプロファイル対象外になります。もし関数名が 唯
              一 に定まらない場合は、 `/path/filename.d:function-
              name' と記述することでこれら を 区 別 で き ま す。
              `bb.out' には、いくつかの利用可能な関数がリストされ
              ます。特別な意味をもつ関 数 が  4   つ あ り ま す:
              `__bb_jumps__' はジャンプ頻度を `bb.out' に書き出し
              ます。 `__bb_trace__' は基本ブロック列を `gzip'  に
              パ イ プ し、ファイル `bbtrace.gz' に書き出します。
              `__bb_hidecall__' は call 命令をトレースから除外 し
              ま す。 `__bb_showret__' は return 命令をトレースに
              含めるようにします。

       -dletters
              加えてダンプします。

       -dy    パース中にデバッグ情報を標準エラー出力にダンプし ま
              す。

       -dr    RTL 生成後に `file.rtl' に対してダンプします。

       -dx     関数をコンパイルするかわりに、RTL を生成するのみの
              処理を行います。通常は `r' とともに使用されます。

       -dj    最初のジャンプ最適化の後に、`file.jump' に対して ダ
              ンプします。

       -ds     共通部分式削除 (しばしば共通部分式削除に続くジャン
              プ最適化も含みます) の終了時に `file.cse' に対し て
              ダンプします。

       -dL    ループ最適化終了時に `file.loop' に対してダンプしま
              す。

       -dt    第 2 共通部分式削除段階 (しばしば共通部分式削除に続
              くジャンプ最適化も含みます) の終了時に、`file.cse2'
              に対してダンプします。

       -df    フロー解析終了後に、`file.flow' に対してダンプし ま
              す。

       -dc     命令コンビネーション終了時に `file.combine' に対し
              てダンプします。

       -dS    第 1 命令スケジューリング段階終了時に  `file.sched'
              に対してダンプします。

       -dl    ローカルレジスタ割り当て終了時に `file.lreg' に対し
              てダンプします。

       -dg    グローバルレジスタ割り当て終了時に `file.greg' に対
              してダンプします。

       -dR    第 2 命令スケジューリング段階終了時に `file.sched2'
              に対してダンプします。

       -dJ    最終ジャンプ最適化終了時に `file.jump2' に対して ダ
              ンプします。

       -dd     遅延分岐スケジューリング終了時に `file.dbr' に対し
              てダンプします。

       -dk    レジスタからスタックへの転換終了時 に  `file.stack'
              に対してダンプします。

       -da    以上の全てのダンプを生成します。

       -save-temps
              通常の "一時" 中間ファイルを消去せずに保存しま す。
              こ れらはカレントディレクトリに置かれ、ソースファイ
              ルに基づいた名前が付けられます。従って、`foo.c'  を
              `-c  -save-temps'  を使用してコンパイルした場合は、
              `foo.cpp', `foo.s' が、`foo.o' と同様に生成さ れ ま
              す。

       -print-libgcc-file-name=library
              ラ イブラリファイル `library ' の完全な絶対名を表示
              します。このファイルはリンクの際のみに使用され、 そ
              れ 以外の働きはありません。このオプションが指定され
              た場合は、GNU CC はコンパイルやリンクを何も行 な わ
              ず、ただファイル名を表示するのみです。

       -print-libgcc-file-name
              `-print-file-name=libgcc.a' と同じです。

       -print-prog-name=program
              `-print-file-name'   と似ていますが、`cpp' のような
              program を検索します。


最適化オプション

       これらのオプションは様々な種類の最適化処理を制御します。

       -O

       -O1    最適化を行います。最適化コンパイルは幾分長めの処 理
              時 間と、大きな関数に対する非常に多くのメモリを必要
              とします。

              `-O' が指定されなかった場合は、コンパイラの目標はコ
              ン パイルのコストを低減することや、目的の結果を得る
              ためのデバッグを可能とすることに置かれます。それ ぞ
              れ の文は独立しています。つまり、ブレークポイントで
              プログラムを停止させることによって、任意の変数に 新
              し い値を代入したり、プログラムカウンタを他の文へと
              変更することを可能とし、そのソースコードにプログ ラ
              マが望む正しい結果を得ることを可能にします。

              `-O'  を指定しなかった場合は、register と宣言した変
              数のみがレジスタへと割り当てられます。コンパイル の
              結 果として得られるコードは、PCC を `-O' なしで使用
              した場合と比較して若干良くないものとなります。

              `-O' が指定されると、コンパイラはコードのサイズと実
              行時間を減少させることを試みます。

              `-O'   を指定することによって、 `-fthread-jumps' と
              `-fdefer-pop' のフラグが指定されます。遅延スロッ ト
              を も つ マシンでは `-fdelayed-branch' が指定されま
              す。

       -Os    サイズ優先で最適化します。普通、コードを増大させ る
              ことのない全ての -O2 最適化が有効になります。更に、
              コードサイズを減らすように設計された最適化も行い ま
              す。

       -O0    最適化を行いません。

              複 数の -O オプションを指定した場合は、レベル番号の
              有無に関わらず、最後に指定したものが有効に な り ま
              す。

       `-fflag'  の形式を持ったオプションは、マシン独立のフラグで
       す。ほとんどのフラグは有効形式と無効形式の双方を持っていま
       す。`-ffoo'   の無効形式は `-fno-foo' です。以下のリストで
       は、デフォルトではない方の形式のみを示します。これに対して
       `no-' を削除する、あるいは追加することによって双方の形式を
       生成することが可能です。

       -ffloat-store
              浮動小数点変数をレジスタに格納しません。こ の オ プ
              ションは 68000 のように (68881 の) 浮動小数点レジス
              タが double よりも高い精度を持っていると思われる マ
              シ ンにおいて、望まない超過精度を抑制することを可能
              にします。

              ほとんどのプログラムにおいては、超過精度は単に良 い
              結 果を生むだけですが、いくつかのプログラムは正確な
              IEEE の浮動小数点フォーマット定義に依存しています。
              このようなプログラムに対して `-ffloat-store' を使用
              します。

       -fmemoize-lookups

       -fsave-memoized
              コンパイルを高速に行なうために、ヒューリスティッ ク
              スを使用します (C++ のみ)。これらのヒューリスティッ
              クスはデフォルトでは有効になっていません。 な ぜ な
              ら、 これはある種の入力ファイルにしか効果がなく、そ
              の他のファイルではかえってコンパイルが低速になる か
              らです。

              最 初に、コンパイラはメンバ関数への呼び出し (あるい
              はデータメンバへの参照) を構築します。これは (1) ど
              の クラスでその名前のメンバ関数が実装されているかを
              決定しB>A(2) どのメンバ関数への呼び出しであるかと い
              う 問題 (これはどの種類の型変換が必要となるかという
              決定も含みます) を解決しB>A(3) 呼び出し側に対する そ
              の 関数の可視性を検査するという作業を行なう必要があ
              ります。これらは全て、コンパイルをより低速にして し
              まいます。通常は、そのメンバ関数への 2 度目の呼び出

              メ ンバとメンバ関数へのアクセス特権 (可視性) はある
              関数におけるコンテキストと別の関数におけるものと で
              は異なるので、 g++ はキャッシュをフラッシュしなけれ
              ばなりません。`-fmemoize-lookups' フラグを使用す る
              と、 全ての関数をコンパイルするたびに毎回キャッシュ
              をフラッシュします。`-fsave-memoized' フラグは同 一
              の ソフトウェアキャッシュについて、コンパイラが前回
              コンパイルした関数のコンテキストが、次にコンパイ ル
              す るコンテキストと同一のアクセス特権を有していると
              みなせる時には、キャッシュを保持します。これは同 一
              ク ラス中に多くのメンバ関数を定義している時に特に有
              効です。他のクラスのフレンドになっているメンバ関 数
              を 除き、同一のクラスに属している全てのメンバ関数の
              アクセス特権は、全て同一です。このよ う な 場 合 は
              キャッシュをフラッシュする必要はありません。

       -fno-default-inline
              ク ラススコープ中に定義されたメンバ関数をデフォルト
              でインライン関数とする処理を行ないません  (C++   の
              み)。

       -fno-defer-pop
              そ れぞれの関数呼び出しに対して、関数のリターン直後
              に常に引数をポップします。関数呼出後に引数をポッ プ
              し なければならないマシンにおいては、コンパイラは通
              常、いくつかの関数の引数をスタックに積んで、それ ら
              を同時にポップします。

       -fforce-mem
              メ モリオペランドに対して、それらに対する演算が行な
              われる前に、レジスタにコピーします。これは全ての メ
              モ リ参照を、潜在的な共通部分式であると定めることに
              よって、より良いコードを生成します。もしそれが共 通
              部 分式でなかった場合は、命令コンビネーションによっ
              てレジスタへの読み込みは削除されます。私はこれが ど
              の よ う な違いを生み出すかということに興味がありま
              す。

       -fforce-addr
              メモリアドレス定数について、それらに対する演算が 行
              な わ れ る 前 に レ ジ ス タにコピーします。これは
              `-fforce-mem' と同じ手法でより良いコードを生成し ま
              す。 私はこれがどのような違いを生み出すかということ
              に興味があります。

       -fomit-frame-pointer
              フレームポインタをレジスタに格納する必要のない関 数
              に おいて、この処理を行いません。これはフレームポイ
              ンタの保存、設定、復帰にかかる命令を省略 し、 さ ら
              に、 多くの関数でレジスタ変数として使用できる余分な
              レジスタを得ることを可能にします。ただし、このオ プ
              関数がこの方法で組み込むに足りるほど単純かを決定 し
              ます。

              も し、ある関数に対する全ての呼び出しを組み込むこと
              ができ、かつその関数が static と宣言されていた場 合
              は、GCC  はその関数を独立したアセンブラコードとして
              は出力をしません。

       -fcaller-saves
              関数呼び出しにおいて破壊されるであろう値を、レジ ス
              タ に保持することを可能とします。これはこのような呼
              び出しの周囲にレジスタに対する保存、復帰の特別な コ
              ー ドを出力することによって実現されます。このような
              割り当ては、それが通常よりも良いコードを出力する と
              みなされる場合にのみ行われます。

              こ のオプションは特定のマシンではデフォルトで有効と
              なっています。これらは通常、このオプションの処理 の
              代 わりに使うことができる呼び出し時保存レジスタが存
              在しないマシンです。

       -fkeep-inline-functions
              ある関数への呼び出しが全て呼び出し側に組み込むこ と
              が できて、かつその関数が static と宣言されていたと
              しても、実行時に呼び出し可能な関数も生成します。

       -fno-function-cse
              関数のアドレスをレジスタに置きません。つ ま り、 定
              まっ た関数を呼び出すコードは、それぞれ明示的な関数
              のアドレスを含むコードとなります。

              このオプションは効率の低いコードを生成しますが、 ア
              セ ンブラ出力を書き換えるようなハックを行なう場合に
              は、このオプションを使用しなければ混乱させられる こ
              とでしょう。

       -fno-peephole
              マシン固有のピープホール最適化を禁止します。

       -ffast-math
              こ の オプションは生成コードのスピードのために、GCC
              に対して、いくつかの ANSI または IEEE の規則/規格を
              侵 させます。例えば、このオプションは sqrt 関数の引
              数は非負の数であることを仮定します。

              このオプションはどの `-O' オプションによっても有 効
              と されません。なぜなら、このオプションは数学関数に
              関する IEEE または ANSI の規則/規格の厳密な実装に依
              存 して書かれたプログラムに対して誤った出力を与える
              からです。

       以下のオプションは特殊な最適化に関 す る 制 御 を 行 い ま
              去を行います。

       -fthread-jumps
              分岐ジャンプによってある場所にジャンプした時に、 最
              初 の分岐に包括される比較が存在した時に、最初の分岐
              のジャンプ先を後者の分岐先に変更します。この変更 先
              は、2  番目の分岐条件の真偽によって、2 番目の分岐の
              ジャンプ先か、あるいは2 番目の分岐の直後に定めら れ
              ます。

       -funroll-loops
              ル ープ展開の最適化を行います。これはループの繰り返
              し数がコンパイル時、あるいはランタイムに決定でき る
              時においてのみ、実行されます。

       -funroll-all-loops
              ル ープ展開の最適化を行います。これは全てのループに
              対して行われます。このオプションは大抵、より遅く 動
              作するプログラムを生成します。

       -fcse-follow-jumps
              共 通部分式削除の処理において、ジャンプ命令の行先が
              他の経路から到達できない場合は、そのジャンプ命令 を
              越 えてスキャンを行ないます。例えば、共通部分式削除
              処理中に else  節を伴った if  文に出会った場合、 条
              件 が偽ならば分岐先に対しても共通部分式削除を続けま
              す。

       -fcse-skip-blocks
              これは `-fcse-follow-jumps' に似ていますが、ブ ロッ
              ク を跨ぐジャンプに対しても共通部分式削除を継続しま
              す。共通部分式削除処理中に、else 節を持たない単純な
              if  文にであった時、 `-fcse-skip-blocks' は if のボ
              ディを跨いだジャンプに対する共通部分式削除処理を 継
              続します。

       -frerun-cse-after-loop
              ル ープ最適化が行なわれた後に、再度共通部分式削除の
              処理を行います。

       -felide-constructors
              コンストラクタへの呼び出しが省略できるように思わ れ
              る場合に、その呼び出しを省略します (C++ のみ)。この
              フラグを指定した場合は、GNU C++ は以下のコードに 対
              し て、一時オブジェクトを経由せずに yfoo への呼
              び出しの結果から直接初期化します。

              A foo (); A y = foo ();

              このオプションを使用しない場合は、GNU C++ は最初 に
              yA 型の適切なコンストラクタを呼び出すことによっ
              て初期化します。そして、 foo の結果を一時オブジェク

       -fdelayed-branch
              ターゲットマシンにおいてこのフラグがサポートされ て
              い る場合は、遅延分岐命令後の命令スロットを命令の順
              番変更によって利用するように設定します。

       -fschedule-insns
              ターゲットマシンにおいてこのフラグがサポートされ て
              い る場合は、必要なデータを利用可能になるまで待つこ
              とによる実行の遅滞を防ぐために、命令の順番の変更 を
              行 います。これは遅い浮動小数点命令やメモリ読み込み
              命令の実行において、それらの結果を必要とする命令 の
              前に他の命令を詰め込みます。

       -fschedule-insns2
              `-fschedule-insns' と似ていますが、レジスタ割当て処
              理の後にもう一度命令スケジューリングの段階を置き ま
              す。 これは、比較的レジスタ数が少なく、メモリロード
              命令が 1 サイクルよりも多くを要するマシンにおいて、
              特に効果的です。


ターゲットオプション

       デ フォルトでは、GNU CC コンパイラは、現在使用しているマシ
       ンと同じタイプのコードをコンパイルします。しか し、GNU  CC
       はクロスコンパイラとしてもインストールすることが可能です。
       実際には、異なったターゲットマシンのための様々なコ ン フィ
       ギュレーションの GNU CC は、同時にいくつもインストールする
       ことが可能です。そこで、どの GNU CC を使用するかを指定する
       ために、`-b' オプションを使用することができます。

       こ れに加えて、古い、あるいはより新しいバージョンの GNU CC
       も同時にいくつもインストールしていくことができます。これら
       の うち 1 つ (おそらくもっとも新しいもの) がデフォルトとな
       ります。しかし、ひょっとしたら別のものを使いたくなるかもし
       れません。

       -b machine
              引数 machine は、コンパイルのターゲットマシンを規定
              します。これは GNU CC をクロスコンパイラとしてイ ン
              ストールした時に有用です。

              machine に指定する値は、GNU CC をクロスコンパイラと
              してコンフィギュレーションした時に与えたマシンタ イ
              プ と同じです。例えば、80386 上の System V で実行さ
              れるプログラムのために `configure i386v' というコン
              フィ ギュレーションを行なったクロスコンパイラを起動
              したい場合は、`-b i386v' と指定します。

              `-b' の設定を省略した場合は、通常は使用しているマシ
              ン と 同 タイプのマシンのためのコンパイルが行われま
              す。

       -V version
       様 々 なハードウェアモデルやコンフィギュレーション--例えば
       68010 と 68020、浮動小数点コプロセッサの有無-- などを選 択
       できます。このオプションを指定することによって、コンパイラ
       はどれか 1 つのモデル、あるいはコンフィギュレーションに 対
       するコンパイルが可能です。

       いくつかのコンフィギュレーションは、通常はそのプラットフォ
       ーム上の他のコンパイラとのコマンドラインに関するの互換性を
       とるための特別なオプションを用意しています。

       以 下は 68000 シリーズのために定義された `-m' オプションで
       す。

       -m68000

       -mc68000
              68000 のためのコードを生成します。これは 68000 ベー
              ス のシステムに対してコンフィギュレーションを行なっ
              たコンパイラのデフォルトです。

       -m68020

       -mc68020
              (68000 ではなく) 68020 のためのコードを生成します。
              これは 68020 ベースのシステムに対してコンフィギュレ
              ーションを行なったコンパイラのデフォルトです。

       -m68881
              浮動小数点演算のために 68881 命令を含んだ出力を行い
              ます。これはほとんどの 68020 ベースのシステムにおい
              て、コンパイラのコンフィギュレーション時に -nfp  を
              指定されなかった場合のデフォルトです。

       -m68030
              68030 のためのコードを生成します。これは 68030 ベー
              スのシステムに対してコンフィギュレーションを行 なっ
              たコンパイラのデフォルトです。

       -m68040
              68040 のためのコードを生成します。これは 68040 ベー
              スのシステムに対してコンフィギュレーションを行 なっ
              たコンパイラのデフォルトです。

       -m68020-40
              68040  のためのコードを生成しますが、新しい命令を使
              用しません。この結 果 と し て 得 ら れ る コ ー ド
              は、68020/68881,  68030, 68040 のいずれのシステムに
              おいても、比較的高い性能を持ちます。

       -mfpa  浮動小数点演算のために Sun FPA 命令を含んだ出力を行
              います。

              ビットフィールド命令を使用しません。`-m68000' は 暗
              黙のうちに `-mnobitfield' を含みます。

       -mbitfield
              ビッ トフィールド命令を使用します。`-m68020' は暗黙
              のうちに `-mbitfield' を含みます。これは変更され て
              いないソースの場合のデフォルトです。

       -mrtd   固定個数の引数をとる関数に対して、異なった関数呼び
              出し規約を使用します。これは、リターン時に 引 数 を
              ポップする rtd 命令を利用するものです。これは呼び出
              し側で引数をポップさせる必要がないために、1 命令 を
              省略することが可能となります。

              こ の呼び出し規約は通常の Unix で使用されている方式
              とは互換性がありません。そのため、Unix コンパイラで
              コ ンパイルされたライブラリを呼び出す必要がある限り
              は、使用することはできません。

              さらに、全ての可変引数をとり得る関数 ( printfを含み
              ま す) に対して、関数プロトタイプを用意する必要があ
              ります。さもないと、これらの関数に対して誤ったコ ー
              ドが生成されます。

              さ らに、関数に対して多過ぎる引数をつけて呼び出すコ
              ードを書いた場合、これは深刻な誤ったコードを生成 し
              ます。(通常は多過ぎる変数は害を及ぼすことなく無視さ
              れます。)

              rtd 命令は 68010 と 68020 によってサポートされま す
              が、 68000 では使用できません。

       以下は Vax のために定義された `-m' オプションです。

       -munix 特定のいくつかのジャンプ命令 (aobleq 等) を出力しま
              せん。これらの命令で長いレンジを使用した場合、  Vax
              用の Unix アセンブラはこれを処理できません。

       -mgnu   こ れ らのジャンプ命令を出力します。アセンブルには
              GNU アセンブラの使用を仮定します。

       -mg    浮動小数点数について、d-フォーマットで は な く、g-
              フォーマットのためのコードを出力します。

       以下は SPARC でサポートされている `-m' スイッチです。

       -mfpu

       -mhard-float
              浮 動小数点命令を含む出力を行います。これはデフォル
              トです。


       -mno-epilogue

       -mepilogue
              -mepilogue を指定することによって (デフォルト)、 コ
              ン パイラは関数を抜けるためのコードを常に関数の最後
              に出力します。関数の途中で関数を抜けるコー ド は 全
              て、 関数の最後の終了コードへのジャンプとして生成さ
              れます。

              -mno-epilogue を設定することによって、コンパイラ は
              関 数から抜けるコードをインライン化することを試みま
              す。

       -mno-v8

       -mv8

       -msparclite
              これらの 3 つのオプションは SPARC アーキテクチャ の
              バリエーションを選択するために使用されます。

              デフォルトでは、(Fujitsu SPARClite 用にコンフィギュ
              レーションしない限りは) GCC は SPARC アーキテクチャ
              v7 用のコードを生成します。

              -mv8 は、SPARC v8 用コードを生成します。v7 コードと
              の違いは、整数の乗算と整数の除算が v7 では存在し な
              いが v8 には存在するという点のみです。

              -msparclite  は、SPARClite 用のコードを生成します。
              これは v7 には存在せず SPARClite に存在する、整数乗
              算、整数除算とスキャン (ffs) 命令を追加します。

       -mcypress

       -msupersparc
              これら 2 つのオプションはコード最適化対象のプロセッ
              サを選択するためのものです。

              -mcypress を用いると(これがデフォルト)、コンパイ ラ
              は Cypress CY7C602 チップ用にコードを最適化します。
              このチップは SparcStation/SparcServer 3xx シリー ズ
              に 用いられています。このオプションは古い SparcSta-
              tion 1, 2, IPX などにも適用できます。

              -msupersparc を用いると、コンパイ ラ は  SuperSparc
              CPU   用にコードを最適化します。このチップは Sparc-
              Station 10, 1000, 2000 シリーズに用いられています。
              このオプションを用いると、SPARC v8 の全命令セットを
              用いるようになります。

              数 リストを持つ関数を除いて、このワードを必要としま
              せん。これらの情報はシンボルテーブルに書かれます。)

       -mnoargcount
              引 数の数を示すワードを省略します。これは変更されて
              いないソースを使用した場合のデフォルトです。

       以下は、AMD Am29000 のために定義された `-m' オプショ ン で
       す。

       -mdw   DW ビットが立っていることを仮定したコードを出力しま
              す。これは、ハードウェアによってバイト操作やハー フ
              ワ ード操作がサポートされているということを意味しま
              す。これはデフォルトです。

       -mnodw DW ビットが立っていないことを仮定したコードを出力し
              ます。

       -mbw    システムがバイト操作やハーフワード書き込み操作をサ
              ポートしていることを仮定したコードを生成します。 こ
              れはデフォルトです。

       -mnbw   システムがバイト操作やハーフワード書き込み操作をサ
              ポートしていないことを仮定したコードを生成しま す。
              これは暗黙のうちに `-mnodw' を含みます。

       -msmall
              ス モールメモリモデルを使用します。これは全ての関数
              のアドレスが単一の 256KB のセグメント内に入る こ と
              と、 関数の絶対アドレスが 256K 以下にあることを仮定
              します。このオプションは call 命令を const, consth,
              calli  シーケンスの代わりに使用することを可能にしま
              す。

       -mlarge
              call 命令が使用できることを仮定しません。これ は デ
              フォルトです。

       -m29050
              Am29050 用のコードを生成します。

       -m29000
              Am29000  用のコードを生成します。これはデフォルトで
              す。

       -mkernel-registers
              gr96-gr127 レジスタへの参照の代わりに gr64-gr95  を
              参 照するコードを生成します。このオプションは、ユー
              ザのコードから使用できるグローバルレジスタから区 別
              さ れたグローバルレジスタの集合を利用するカーネルの
              コードをコンパイルする時に使用できます。

       オプションです。

       -m88000
              m88100 と m88110 の双方で比較的高性能で動作するコー
              ドを生成します。

       -m88100
              m88100 に最適なコードを生成します。ただし m88110 に
              おいても動作します。

       -m88110
              m88110 に最適なコードを生成します。ただし m88100 に
              おいては動作しないかも知れません

       -midentify-revision
              ア センブラ出力中に、ソースファイル名、コンパイラ名
              とバージョン、タイムスタンプ、使用されたコンパイ ル
              フラグを記した ident ディレクティブを挿入します。

       -mno-underscores
              シ ンボル名の最初にアンダースコアキャラクタをつけな
              いアセンブラ出力を生成します。デフォルトでは個々 の
              名 前に対して、アンダースコアをプレフィックスとして
              使用します。

       -mno-check-zero-division

       -mcheck-zero-division
              初期の 88K のモデルはゼロによる除算の処理に問 題 を
              持っ ていました。特に、それらの多くにおいてトラップ
              が生じなかったことは問題でした。これらのオプショ ン
              を 使用することによって、ゼロ除算を発見し、例外を知
              らせるコードを埋め込むことを禁止 (あるいは明示的 に
              許 可) することができます。全ての 88K 用の GCC のコ
              ンフィギュレーションは `-mcheck-zero-division' をデ
              フォルトとして使用しています。

       -mocs-debug-info

       -mno-ocs-debug-info
              88Open Object Compatibility Standard "OCS" で定義さ
              れた (それぞれのスタックフレーム中で使用されるレ ジ
              ス タに関する) 付加的なデバッグ情報を取り込みます (
              または省略します)。これらの付加的な情報は  GDB   に
              よっ て は 必 要とされません。DG/UX, SVr4, Delta 88
              SVr3.2 ではデフォルトでこの情報を含めます。その他の
              88K  コンフィギュレーションではデフォルトで省略しま
              す。

       -mocs-frame-position

       -mno-ocs-frame-position
              ー スを節約しますが、いくつかのデバッガ (GDB は含ま
              れな い)   を ク ラッ シュ さ せ ま す。`-mno-opti-
              mize-arg-area' はより標準に従っています。デフォルト
              では GCC は引数エリアの最適化を行いません。

       -mshort-data-num
              データ参照時に、それらの処理を r0 からの相対参照 で
              行 なうことによって小さなコードにすることを可能とし
              ます。これは値のロードを (その他の場合は 2 命令かか
              る と ころを) 1 命令で行なうことを可能にします。num
              をこのオプションとともに指定することによって、ど の
              デ ー タ 参照が影響を受けるかを指定することができま
              す。例えば `-mshort-data-512' を指定すると、512  バ
              イ ト以内のディスプレースメントのデータ参照が影響を
              受けることになります。 `-mshort-data-num' は num が
              64K よりも大きな時は効果を持ちません。

       -mserialize-volatile

       -mno-serialize-volatile
              volatile なメモリへの参照について、シーケンシャルな
              整合性を持ったコードを生成する、あるいは生成しま せ
              ん。

              GNU CC はデフォルトではどのプロセッササブモデルを選
              んだ場合においても、整合性を常に保証します。これ が
              ど のように実現されているかは、サブモデルに依存して
              います。

              m88100 プロセッサはメモリ参照の順番を入れ換えないの
              で、 常 に シーケンシャルな整合性は保たれます。もし
              `-m88100' を使用した場合は、GNU CC はシーケンシャル
              な整合性を保つための特別な命令を生成しません。

              m88110 プロセッサにおけるメモリ参照の順番は、必ずし
              もそれらの要求を行なった命令の順番とは一致 し ま せ
              ん。 特に、読み込み命令は、先行する書き込み命令より
              も先に実行され得ます。このような順番の入れ換え は、
              マ ルチプロセッサ時に volatile なメモリの参照におけ
              るシーケンシャルな整合性を崩 し て し ま い ま す。
              `-m88000'  または `-m88110' を指定した場合には、GNU
              CC は、必要な場合は特別な命令を生成し、命令の実行が
              正しい順番で行なわれることを強制します。

              こ こで生成される整合性を保証するための特別な命令は
              アプリケーションの性能に対して影響を及ぼします。 も
              し この保証無しで問題がないということがわかっている
              場合は、`-mno-serialize-volatile' を使用すること が
              できます。

              `-m88100' オプションを使用しているが、m88110 におけ
              る実行時にシーケンシャルな整合性が必要とされる場 合

          o   `-msvr4' は、GCC に SVr4 によって使用されている付加
              的な宣言ディレクティブを生成させます。

       `-msvr3' は、SVr4 を除く全ての m88K コンフィギュレーション
       におけるデフォルトです。

       -mtrap-large-shift

       -mhandle-large-shift
              31 ビットより大きいビットシフトを検出するコードを埋
              め 込みます。これらのオプションを指定することによっ
              て、それぞれトラップ、あるいは適切に処理するコー ド
              が埋め込まれます。デフォルトでは GCC は大きなビット
              シフトには特別な対策を行いません。

       -muse-div-instruction
              非常に初期の 88K アーキテクチャのモデルは除算命令を
              持っ ていません。従って、GCC はデフォルトでは除算命
              令を生成しません。このオプションは除算命令が安全 に
              使用できるということを指定します。

       -mversion-03.00
              DG/UX  コンフィギュレーションには、2 つの SVr4 の種
              類があります。このオプションは -msvr4 オプション に
              よって hybrid-COFF と real-ELF のどちらが使用される
              かを選択します。他のコンフィギュレーションはこの オ
              プションを無視します。

       -mwarn-passed-structs
              関 数に対して構造体を渡した場合と、関数が構造体を返
              した場合に警告します。構造体を渡す規約は C 言語の発
              展 の中で変化しており、移植性の問題をしばしば生じる
              ことになります。デフォルトでは GCC はこの警告を行い
              ません。

       以下のオプションは IBM RS6000 のために定義されたものです。

       -mfp-in-toc

       -mno-fp-in-toc
              浮動小数点定数を Table of Contents (TOC) に入れるか
              ど うかを指定します。このテーブルは全てのグローバル
              変数と関数のアドレスを格納します。デフォル ト で は
              GCC は浮動小数点定数をここに格納します。もし TOC が
              算術あふれをおこす場合は、`-mno-fp-in-toc' を使用す
              ることによって TOC のサイズを小さくすることが可能で
              あり、算術あふれを防ぐことができるでしょう。

       以下は IBM RT PC 用に定義された `-m' オプションです。

       -min-line-mul
              成 されますが、実行は遅くなります。なぜならスクラッ
              チスペースが動的に確保されるからです。

       -mfp-arg-in-fpregs
              IBM の関数呼び出し規約とは互換性のない呼び出し手 順
              を 使用します。この規約では浮動小数点引数を浮動小数
              点レジスタに入れて渡します。このオプションを指定 す
              る と、varargs.hstdarg.h で浮動小数点オペランド
              が使用できなくなることに注意して下さい。

       -mfp-arg-in-gregs
              浮動小数点に対して通常の関数呼び出し規約を使用し ま
              す。これはデフォルトです。

       -mhc-struct-return
              1  ワードより大きな構造体を返す時に、レジスタではな
              くメモリを使用して返します。これは  MetaWare  HighC
              (hc)   コ ン パ イ ラ と の 互 換 性 を 提 供 し ま
              す。`-fpcc-struct-return' を使用すること に よっ て
              Portable  C Compiler (pcc) との互換性を得ることがで
              きます。

       -mnohc-struct-return
              1 ワードより大きな構造体を返す時に、レジスタに よっ
              て 返される場合があります。これはその方が便利である
              と考えられる時に使用されます。これはデフォ ル ト で
              す。 IBM が提供するコンパイラとの互換性を得るために
              は、`-fpcc-struct-return'  と  `-mhc-struct-return'
              の双方を使用します。

       以 下 は MIPS ファミリのために定義された `-m' オプションで
       す。

       -mcpu=cpu-type
              命令スケジューリング時に、デフォルトのマシンタイ プ
              を  cpu-type に仮定します。デフォルトの cpu-typedefault です。この選択はすべてのマシンに対する最 長
              の サイクル数を元にコードを生成します。これは、生成
              されるコードがどの MIPS cpu においても適当な速度 で
              処 理 されるようにするためです。これ以外の cpu-type
              の選択としては、 r2000, r3000, r4000, r6000 があ り
              ま す。特定の cpu-type を選択した場合は、その特定の
              チップに適したスケジュールが行われます。コンパイ ラ
              は、  -mips2 または -mips3 スイッチが使用されていな
              い場合は、MIPS ISA (instruction  set  architecture)
              のレベル 1 に合致しないコードを生成することはありま
              せん。

       -mips2 MIPS ISA のレベル 2 (branch likely 命令, 平方 根 命
              令)   に よ る 命 令群を出力します。 -mcpu=r4000-mcpu=r6000 スイッチは、 -mips2 と共に使用される 必
              要があります。
              を起動して通常のデバッグ情報を追加します。 こ れ は
              OSF/1   リ ファレンスプラットフォーム以外の全てのプ
              ラットフォームにおけるデフォルトです。 OSF/1 リファ
              レ ンスプラットフォームは OSF/rose オブジェクトフォ
              ーマットを使用します。 ス イッ チ  -ggdb,  -gstabs,
              -gstabs+   の う ちのどれかが使用されている場合は、
              mips-tfile プログラムは、stabs を MIPS ECOFF 中にカ
              プセル化します。

       -mgas  GNU  アセンブラ用のコードを生成します。これは OSF/1
              リファレンスプラットフォームにおけるデフォ ル ト で
              す。OSF/1   リファレンスプラットフォームは OSF/rose
              オブジェクトフォーマットを使用します。

       -mrnames

       -mno-rnames
              -mrnames スイッチは出力コードにおいて、レジスタの名
              前 として、ハードウェア名の代わりに MIPS ソフトウェ
              ア名を使用することを指定します。(つまり、 a0$4
              の 代 わりに使用します)。 GNU アセンブラは -mrnames
              スイッチをサポートしません。MIPS アセンブラはソース
              ファ イルに対して MIPS C プリプロセッサを起動するで
              しょう。 -mno-rnames スイッチがデフォルトです。

       -mgpopt

       -mno-gpopt
              -mgpopt スイッチは、全てのデータ宣言をテキストセ ク
              ショ ン中の全命令の前に書き出すことを指定します。こ
              れによって、全ての MIPS アセンブラは、ショートグ ロ
              ー バル、あるいは静的なデータアイテムに対して、2 ワ
              ードではなく、1 ワードのメモリ参照命令を生 成 し ま
              す。これは最適化が指定された場合のデフォルトです。

       -mstats

       -mno-stats
              -mstats  が指定された場合は、コンパイラによってイン
              ラインでない関数が処理されるごとに、標準エラー出 力
              ファ イルに対して、そのプログラムに対する統計情報を
              示す 1 行のメッセージを出力します。このメッセ ー ジ
              は、 保存したレジスタの数、スタックのサイズなどを示
              します。

       -mmemcpy

       -mno-memcpy
              -mmemcpy スイッチは、全てのブロック転送に対して、イ
              ン ラインコードを生成する代わりに、適切なストリング
              関数 (memcpy または bcopy) を呼び出すコードを生成し
              ます。

       -msoft-float
              浮 動小数点演算のためにライブラリを呼び出す出力を行
              います。 警告: この必須のライブラリは GNU CC の一部
              と しては含まれません。通常はそのマシンの一般的な C
              コンパイラの提供するものを使用しますが、これは通 常
              の 方法ではクロスコンパイルで直接使用することはでき
              ません。クロスコンパイルを行ないたい場合は、自分 自
              身で必要なライブラリ関数を用意する必要があります。

       -mhard-float
              浮 動小数点命令を含んだ出力を生成します。これは変更
              されないソースを使用した場合のデフォルトです。

       -mfp64 ステータスワード中の FR ビットが立っていることを 仮
              定 します。これは 32 個の 32 ビット浮動小数点レジス
              タの代わりに、32 個の 64 ビットの浮動小数点レジスタ
              が 存在するということを示します。この場合は、同時に
              -mcpu=r4000-mips3 スイッチを指定する必要があ り
              ます。

       -mfp32 32 個の 32 ビット浮動小数点レジスタが存在するという
              ことを仮定します。これはデフォルトです。

       -mabicalls

       -mno-abicalls
              いくつかの System V.4 の移植が位置独立コードのた め
              に 使 用する疑似命令 .abicalls, .cpload, .cprestore
              を出力する、あるいは出力しません。

       -mhalf-pic

       -mno-half-pic
              -mhalf-pic スイッチは、テキストセクション中に参照を
              配 置する代わりに、外部参照を行なうポインタをデータ
              セクションに配置し、それをロードする動作を指定し ま
              す。このオプションは現在まだ動作しません。 -Gnumnum バイト以下のグローバル、あるいは静的なアイテ ム
              を、通常のデータや bss セクションではなく、小さなデ
              ータ、または bss セクションに配置することを指定しま
              す。これによりアセンブラは、通常では 2 ワードの参照
              を行うところを、グローバルポインタ (gp または  $28)
              を基準とした 1 ワードのメモリ参照命令を生成可能とな
              ります。デフォルトでは MIPS アセンブラが使用され る
              場 合、 num は 8 です。また、GNU アセンブラが使用さ
              れる場合のデフォルトは 0 です。 -Gnum スイッチは ア
              セ ンブラ、リンカにも同様に渡されます。全てのモジュ
              ールは同一の -Gnum の値でコンパイルされなければなり
              ません。

       -nocpp MIPS   アセンブラに、ユーザアセンブラファイル (`.s'
              拡張子を持ちます) に対するアセンブル時のプ リ プ ロ
              -mcpu=pentium と同義です。

       -mpentiumpro
              -mcpu=pentiumpro と同義です。

       -mcpu=cpu type
              命 令をスケジューリングする際のマシンタイプのデフォ
              ルトを設定します。 CPU TYPE の選択肢は i386,  i486,
              i586  (pentium), pentium, i686 (pentiumpro), および
              pentiumpro です。ある CPU TYPE を選ぶと、その 特 定
              チッ プに適するようにスケジューリングを行いますが、
              -march=cpu type オプションを指定しない限り、コン パ
              イ ラは i386 で実行できないようなコードは生成しませ
              ん。

       -march=cpu type
              マシンタイプ CPU TYPE 用に命令を生成し ま す。  CPU
              TYPE   の 選択肢は i386, i486, pentium, および pen-
              tiumpro です。 -march=cpu  type   を 指 定 す る と
              -mcpu=cpu type も指定されたものとみなします。

       -msoft-float
              浮 動小数点演算のためにライブラリを呼び出す出力を行
              います。 警告: この必須のライブラリは GNU CC の一部
              と しては含まれません。通常はそのマシンの一般的な C
              コンパイラの提供するものを使用しますが、これは通 常
              の 方法ではクロスコンパイルで直接使用することはでき
              ません。クロスコンパイルを行ないたい場合は、自分 自
              身で必要なライブラリ関数を用意する必要があります。

              関数が浮動小数点数を返す時に 80387 レジスタスタック
              を使用するマシンにおいては、`-msoft-float' を使用し
              た 場 合 でも、いくつかの浮動小数点命令が生成されま
              す。

       -mno-fp-ret-in-387
              関数からの返り値に FPU のレジスタを使用しません。

              通常の関数呼び出し規約は、たとえ FPU が存在しなくて
              も  floatdouble の結果を FPU レジスタに入れて返
              します。したがってこの場合、オペレーティングシス テ
              ムは FPU をエミュレートしなければなりません。

              `-mno-fp-ret-in-387' オプションを指定すると、浮動小
              数点数も通常の CPU レジスタに入れて返されます。

       -mprofiler-epilogue

       -mno-profiler-epilogue
              関数から抜けるコードにてプロファイル情報を書き出 す
              追加コードを生成します。

       -mshared-libs
              HP-UX 共有ライブラリとリンクさせるコードを生成し ま
              す。 このオプションはまだ完全に動作しているわけでは
              なく、どの PA ターゲットにおいてもデフォルトに なっ
              て いません。このオプションを指定すると、コンパイラ
              は誤ったコードを出力し得ます。

       -mno-shared-libs
              共有ライブラリとリンクしないコードを生成します。 こ
              れ は 全 ての PA ターゲットにおいてデフォルトのオプ
              ションです。

       -mlong-calls
              関数の呼び出し先と呼び出し元が同一ファイルに含ま れ
              た 場合、呼び出し時の距離が 256K を越える場合でも動
              作するようなコードを出力します。このオプション は、
              リ ンカから "branch out of range errors" でリンクを
              拒否された時以外には使用しないようにしてください。

       -mdisable-fpregs
              いかなる形においても、浮動小数点レジスタの使用を 禁
              止 します。これは浮動小数点レジスタに配慮しないコン
              テキストスイッチを行なうカーネルに対して有効で す。
              こ のオプションを使用して、浮動小数点処理を行なおう
              とすると、コンパイラはアボートします。

       -mdisable-indexing
              コンパイラに対して、indexing addressing mode を使用
              し ないように指定します。これによって MACH において
              MIG によって生成されたコードをコンパイルする際 の、
              あ ま り 重要でないいくつかの問題を防ぐことができま
              す。

       -mtrailing-colon
              ラベル定義の後にコロンを加えます (ELF アセ ン ブ ラ
              用)。

       以下は、Intel 80960 ファミリ用に定義された `-m' オプション
       です。

       -mcpu-type
              デフォルトのマシンタイプを cpu-type に仮定しま す。
              こ れは生成する命令とアドレッシングモード、そして境
              界条件に関係します。デフォルトの cpu-typekb  で
              す。 その他の選択としては ka, mc, ca, cf, sa, sb が
              あります。

       -mnumerics

       -msoft-float
              -mnumerics オプションはプロセッサが浮動小数点命令を
              サ ポートすることを示します。 -msoft-float オプショ

       -mtail-call

       -mno-tail-call
              (マシン非依存の部分を越えて) 末尾再帰を分岐に変換す
              る処理に関するさらなる最適化を行います(または行いま
              せん)。この手法の適用が正当でないということに関する
              判 断が完全ではないので、まだこのオプションを使用す
              ることは適当でないかもしれません。 デ フォ ル ト は
              -mno-tail-call です。

       -mcomplex-addr

       -mno-complex-addr
              こ の i960 の実装では複雑なアドレッシングモードの使
              用が優位であると仮定します (あるいは仮定しません)。
              複雑なアドレッシングモードは K-シリーズでは使用する
              価値は無いかも知れませんが、 C-シリーズでは確かに使
              用 する価値があります。現在は -mcomplex-addr が、CB
              と CC を除く全てのプロセッサにおけるデフォ ル ト で
              す。

       -mcode-align

       -mno-code-align
              より高速なフェッチのためにコードを 8 バイトにアライ
              ンします (または何もしません)。現在では C シリー ズ
              の実装においてのみデフォルトで有効にしています。

       -mic-compat

       -mic2.0-compat

       -mic3.0-compat
              iC960 v2.0 または v3.0 との互換性を持たせます。

       -masm-compat

       -mintel-asm
              iC960 アセンブラとの互換性を持たせます。

       -mstrict-align

       -mno-strict-align
              ア ラインされないアクセスを許可しません (あるいは許
              可します)。

       -mold-align
              Intel による gcc リリースバージョン 1.3  (gcc  1.37
              ベ ース) との構造体の境界条件に関する互換性を持たせ
              ます。現在は、 #pragma align 1 が同時に仮定されてし
              まい、無効化できないというバグを持っています。
              います。浮動小数点演算のない Alpha のためのコンパイ
              ルを行なうためには、ライブラリもこれらを呼び出さ な
              いようにコンパイルされていなければなりません。

              浮動小数点演算のない Alpha の実装は、浮動小数点レジ
              スタを必要とするということに注意して下さい。

       -mfp-reg

       -mno-fp-regs
              浮動小数点レジスタセットを使用する (使用しない)コー
              ド を 生 成 し ま す。  -mno-fp-regs は暗黙のうちに
              -msoft-float を含みます。浮動小数点レジスタセットが
              使 用されない場合は、浮動小数点オペランドは整数レジ
              スタに入れられて渡され、浮動小数点数の結果は $f0 で
              は なく $0 に入れて返されます。これは非標準の関数呼
              び出し手順であり、浮動小数点数の引数や返り値を持 つ
              関数で、-mno-fp-regs をつけてコンパイルされたコード
              から呼び出される関数はすべてこのオプションをつけ て
              コンパイルされている必要があります。

              こ のオプションの典型的な用法は、浮動小数点レジスタ
              を使用せず、したがって浮動小数点レジスタへのセー ブ
              も リストアも必要のないカーネルを構築する時などがあ
              るでしょう。

       ここに追加するオプションは System V Release 4 において、こ
       れらのシステム上の他のコンパイラとの互換性のために提供され
       るものです。

       -G     SVr4 システムにおいて、gcc は `-G' オプションを受け
              付けます (そしてこれをシステムリンカに渡します)。こ
              れは他のコンパイラとの互換性のためです。しかし、 リ
              ン カ オプションを gcc のコマンドラインから渡すより
              も、我々は `-symbolic' または `-shared' の使用が 適
              当であると考えています。

       -Qy     コンパイラが使用したそれぞれのツールのバージョンを
              .ident アセンブラディレクティブを使用して、出力で明
              示します。

       -Qn    .ident ディレクティブを出力に加えることを抑制します
              (これはデフォルトです)。

       -YP,dirs
              `-l' で指定されたライブラリに対して、 dirsで規定 さ
              れ た ディ レクトリのみを検索し、他は検索しません。
              dirs 中は、1 つのコロンで区切ることにより、複 数 の
              ディレクトリエントリを記述します。

       -Ym,dir
              M4  プリプロセッサを dir に検索します。アセンブラが
              参照型によって参照されるオブジェクトはヌルでない と
              仮定します (C++ のみ)。

              通常は GNU C++ は参照型によって参照されるオブジェク
              トに関しては保守的な仮定を行います。例えば、コン パ
              イ ラ は  a  が以下のコードにおいてヌルでないことを
              チェックする必要があります。

              obj &a = g (); a.f (2);

              この種の参照がヌルでないことのチェックは、特別な コ
              ー ドを必要とします。しかし、これは多くのプログラム
              にとって無用なものです。このヌルに対するチェック を
              必要のない場合 `-fnonnull-objects' を使用することに
              より、省略することができます。

       -fpcc-struct-return
              structunion の値を返す場合に、普通の C コンパイ
              ラ が行なうのと同じ規約を使用します。この規約は小規
              模な構造体に対して非効率なものとなり、また多くの マ
              シ ンでその関数を再入不可能としてしまいます。しかし
              これは、GCC でコンパイルされたコードと PCC でコンパ
              イ ルされたコードを相互に呼び出すことを可能とすると
              いう利点を持ちます。

       -freg-struct-return
              structunion の値を返す場合に、可能な場合はレ ジ
              ス タ を 使 用 す る 規 約 を 使 用 し ます。これは
              -fpcc-struct-return を使用した場合と比較して、小 さ
              な構造体を返す場合に高い性能を発揮します。

              -fpcc-struct-return-freg-struct-return のどちら
              も使用しなかった場合には、GNU CC は各ターゲットに対
              し て標準であると考えられる規約をデフォルトとして使
              用します。もし 標 準 規 約 が な かっ た 場 合 は、
              -fpcc-struct-return をデフォルトとして使用します。

       -fshort-enums
              enum 型に対して、ちょうど取り得る値の範囲に応じたバ
              イト数の型を与えます。具体的には、enum 型は、その値
              域を格納するに十分な最小の整数型と等価になります。

       -fshort-double
              doublefloat  と同サイズにします。

       -fshared-data
              データと非 const 変数を、プライベートなデータではな
              く、共有データとしてコンパイルします。このオプ ショ
              ン は、走行中の同じプログラム間は共有データが共有さ
              れ、プライベートデータがそれぞれのプロセスに 1 つず
              つ 与えられるような一部のオペレーティングシステムで
              意味を持ちます。

       -fno-gnu-linker
              (C++ のコンストラクタとデストラクタのような) グロー
              バルな初期化のコードを (GNU リンカがこれらを扱う 標
              準 のシステムであるようなシステムにおいて) GNU リン
              カで使用される形式で出力しません。これは GNU リンカ
              で は な いリンカを使用する場合に指定します。この場
              合、 collect2 を使用して、確実にシステムリンカに コ
              ン ストラクタとデストラクタを含んだコードを出力させ
              る必要があります。(collect2 は GNU CC のディスト リ
              ビューションに含まれます。) collect2 を必ず使用しな
              ければならない システムにおいては、コンパイラドライ
              バ gcc は自動的にそのようにコンフィギュレーションさ
              れます。

       -finhibit-size-directive
              .sizeアセンブラディレクティブなど、関数が途中で分割
              さ れ、メモリ上の異なった位置にそれぞれの部分が配置
              されるような場合に不都合が生じるような要素を出力 し
              ま せん。このオプションは `crtstuff.c' をコンパイル
              する時に使用されます。それ以外の場所ではこれを使 用
              する必要はありません。

       -fverbose-asm
              出 力のアセンブラ中に特別なコメント情報を追加し、可
              読性を高めます。このオプションは一般的には、出力 の
              ア センブラコードを本当に読みたい場合 (例えばコンパ
              イラ自身をデバッグしているような場合) にのみ効果 が
              あります。

       -fvolatile
              ポ インタによるメモリの参照を全て volatile として扱
              います。

       -fvolatile-global
              外部変数やグローバルデータアイテムへのメモリ参照 を
              全て volatile として扱います。

       -fpic   このオプションがターゲットマシンでサポートされてい
              れば、位置独立なコードを出力します。このオプショ ン
              は共有ライブラリでの使用に適します。

       -fPIC   このオプションがターゲットマシンでサポートされてい
              れば、位置独立なコードを出力します。このオプショ ン
              は ダイナミックリンクに適しており、分岐において大き
              なディスプレースメントを要求する場合にも適 応 し ま
              す。

       -ffixed-reg
              名前が reg のレジスタを固定レジスタとして扱います。
              生成されたコードはこのレジスタを参照しません (た だ
              し、 スタックポインタ、フレームポインタ、その他固定
              用途の場合を除きます)。
              れた関数は、レジスタ reg の保存や復帰を行いません。

              こ のフラグをマシンの実行モデルにおいて、ある固定的
              で特殊な役割を持っているレジスタ、例えばスタック ポ
              イ ンタやフレームポインタに対して適用することは、破
              滅的な結果を生みます。

              このフラグは無効形式を持ちません。なぜなら、これ は
              3 通りの指定が可能であるからです。

       -fcall-saved-reg
              名前が reg のレジスタを、関数によって保存される割り
              当て可能なレジスタとして取り扱います。これは、関 数
              呼 び出しを跨いで存在する一時領域や変数としても割り
              当てることができます。この指定でコンパイルされた 関
              数は、レジスタ reg を使用する場合、その保存と復帰を
              行います。

              このフラグをマシンの実行モデルにおいて、ある固定 的
              で 特殊な役割を持っているレジスタ、例えばスタックポ
              インタやフレームポインタに対して適用することは、 破
              滅的な結果を生みます。

              ま た、このフラグを関数の返り値が格納されるレジスタ
              に使用すると、これも破滅的な結果を生みます。

              このフラグは無効形式を持ちません。なぜなら、これ は
              3 通りの指定が可能であるからです。


プラグマ

       2 つの `#pragma' ディレクティブ(指令)が GNU C++ によってサ
       ポートされています。これは、1 つのヘッダファイルを 2 つ の
       目的、つまりあるオブジェクトクラスのためのインタフェースの
       定義としての目的と、オブジェクトクラスに含まれる内容の完全
       な定義としての目的の、両方の目的で使用するためのものです。

       #pragma interface
              (C++ のみ) このディレクティブを、オブジェクトクラス
              を 定義しているヘッダファイル中に使用することによっ
              て、それらのクラスを使用するほとんどのオブジェク ト
              ファ イ ル の大きさを減少させることができます。通常
              は、特定の情報 (インラインメンバ関数のバックアッ プ
              コ ピー、デバッグ情報、仮想関数実現のための内部テー
              ブル) の複製がそのクラス定義をインクルードしたそ れ
              ぞ れのオブジェクトファイル中に置かれます。このプラ
              グマを使用することによって、このような複製を防ぐ こ
              と が 可 能となります。`#pragma interface' を含んだ
              ヘッダファイルをインクルードした場合は、これらの 追
              加 情報は生成されません (ただし、メインの入力ソース
              ファイル自身が `#pragma implementation' を含んで い
              る場合を除きます)。そのかわり、オブジェクトファイル
              はリンク時に解決される参照を含むことになります。
              `#pragma implementation' を、引数をつけずに使用した
              場 合 は、 これはそのソースファイルと同じベースネー
              ム(basename)を持つファイルに対して適用されます。 例
              え ば、`allclass.cc'  中の `#pragma implementation'
              は、`#pragma implementation "allclass.h" ' と等価で
              す。もし複数のヘッダファイルに対して、 1 つのインプ
              リメンテーションファイルを対応させたい場合は、文 字
              列の引数を使用する必要があります。

              1  つのヘッダファイルに対して、複数のインプリメンテ
              ーションファイルを対応させる方法はありません。


関連ファイル

       file.c             C 言語ソースファイル
       file.h             C 言語ヘッダ (プリプロセッサ) ファイル
       file.i             プリプロセス済みの C 言語ソースファイル
       file.C             C++ ソースファイル
       file.cc            C++ ソースファイル
       file.cxx           C++ ソースファイル
       file.m             Objective-C ソースファイル
       file.s             アセンブリ言語ファイル
       file.o             オブジェクトファイル
       a.out              リンクエディット済みの出力
       TMPDIR/cc*         一時ファイル群
       LIBDIR/cpp         プリプロセッサ
       LIBDIR/cc1         C 言語コンパイラ
       LIBDIR/cc1plus     C++ コンパイラ
       LIBDIR/collect     いくつかのマシンで必要となるリンカのフロントエンド
       LIBDIR/libgcc.a    GCC サブルーチンライブラリ
       /lib/crt[01n].o    スタートアップルーチン
       LIBDIR/ccrt0       C++ 用の付加的なスタートアップルーチン
       /lib/libc.a        標準ライブラリB>Aintro(3)を参照
       /usr/include       #include ファイルのための標準ディレクトリ
       LIBDIR/include     #include ファイルのための GCC 標準ディレクトリ
       LIBDIR/g++-include #include ファイルのための付加的な g++ ディレクトリ

       LIBDIR は通常 /usr/local/lib/machine/version の形式を持 ち
       ます
       TMPDIR は環境変数 TMPDIR (もし使用可能ならば /usr/tmp を、
       そうでなければ /tmp を使用します) からとられます。


関連項目

       as(1), cpp(1), gdb(1), ld(1)
       info 中の `gcc', `cpp', `as', `ld', `gdb'  エントリ
       Using and Porting GNU CC (for  version  2.0),  Richard  M.
       Stallman;  The C Preprocessor, Richard M. Stallman; Debug-
       ging with GDB: the GNU Source-Level Debugger,  Richard  M.
       Stallman and Roland H. Pesch; Using as: the GNU Assembler,
       Dean Elsner, Jay Fenlason & friends; ld: the  GNU  linker,
       Steve Chamberlain and Roland Pesch.


バグ

       identical to this one.

       Permission  is granted to copy and distribute translations
       of this manual into another language, under the above con-
       ditions for modified versions, except that this permission
       notice may be included in  translations  approved  by  the
       Free  Software  Foundation  instead of in the original En-
       glish.


作者

       GNU CC に対して貢献した人々に関しては、GNU CC マニュアルを
       参照してください。


日本語訳

       細川 達己(hosokawa@mt.cs.keio.ac.jp): NetBSD 用に翻訳
       sakai@csl.cl.nec.co.jp, h-nokubi@nmit.mt.nec.co.jp,
       kumano@strl.nhk.or.jp, horikawa@isrd.hitachi.co.jp: FreeB-
       SD 向けに修正, 査閲



GNU Tools                   1998/12/16                     GCC(1)

ABELNET VPSサービス