Provided by: manpages-ja_0.5.0.0.20060115-1_all bug

FreeBSDå›ç½ä½ãé›ã‚ãƒå»ã‚è½ãƒè…ン
       -pthread
              スレッド化ユーザプロセスに libc の代りに libc_r をリンクします。
              スレッド化ユーザプロセスにリンクされるオブジェクトは
              -D_THREAD_SAFE 付い コンパイルする必要があります。

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

      å…æ¾ä½ç™çšãæ·ã‚ãƒå»ã‚è½ãƒè…ン
              -c -S -E -o file -pipe -v -x language

      è¨ç”èªè­ã‚ãƒå»ã‚è½ãƒè…ン
              -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

      è­æ‹å‘é™ã‚ãƒå»ã‚è½ãƒè…ン
              -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 -Wparentheses -Wpointer-arith -Wredundant-decls
              -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch
              -Wtemplate-debugging -Wtraditional -Wtrigraphs -Wuninitialized
              -Wunused -Wwrite-strings

      ãƒå¦ãƒä¸ãƒå¥ã‚å“ã‚ãƒå»ã‚è½ãƒè…ン
              -a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+
              -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg -save-temps
              -print-file-name=library -print-libgcc-file-name

      æœæ’éåŒæ„ã‚ãƒå»ã‚è½ãƒè…ン
              -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
              -fdelayed-branch -felide-constructors -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

      ãƒå»ãƒèžãƒå»ãƒè¹ã‚æœãƒå¥ã‚æ±ã‚ãƒå»ã‚è½ãƒè…ン
              -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

      ã‚â–ã‚æœãƒéµãƒå±ãƒè–ã‚ãƒå»ã‚è½ãƒè…ン
              -Wa,option

      ãƒèžãƒéµã‚ã‚ãƒå»ã‚è½ãƒè…ン
              -llibrary -nostartfiles -nostdlib -static -shared -symbolic
              -Xlinker option -Wl,option -u symbol

      ãƒå¦ã‚ãƒè­ã‚ãƒè‚ãƒèžã‚ãƒå»ã‚è½ãƒè…ン
              -Bprefix -Idir -I- -Ldir

      ã‚æ‹ãƒç’ã‚æ®ãƒå¥ãƒè‚ã‚ãƒå»ã‚è½ãƒè…ン
              -b  machine -V version

      ã‚çãƒéµãƒä¾ã‚ã‚ãƒçµãƒè­ãƒç’ã‚è½ãƒè…ãƒé¶ä¾é å­çŒã‚ãƒå»ã‚è½ãƒè…ン
              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 _
              -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
              -mhandle-large-shift -midentify-revision
              -mno-check-zero-division -mno-ocs-debug-info
              -mno-ocs-frame-position -mno-optimize-arg-area
              -mno-serialize-volatile -mno-underscores -mocs-debug-info
              -mocs-frame-position -moptimize-arg-area -mserialize-volatile
              -mshort-data-num -msvr3 -msvr4 -mtrap-large-shift
              -muse-div-instruction -mversion-03.00 -mwarn-passed-structs

              RS6000 _
              -mfp-in-toc -mno-fop-in-toc

              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

      ã‚é­ãƒç’ãƒå»ç”è¨æˆã‚ãƒå»ã‚è½ãƒè…ン
              -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
              であると明示的に指定します
              (拡張子に基づくデフォルトの選択よりも優先されます)。このオプションは、
              次の                                                        `-x'
              オプションが出てくるまで、後続する全ての入力ファイルに対して
              適用されます。language     としては、     `c',    `objective-c',
              `c-header',       `c++',       `cpp-output',        `assembler',
              `assembler-with-cpp' を指定することが可能です。

       -x none
              言語の指定を解除します。このオプションのあとに続くファイルは、それらの拡張子に
              基づいて                   (あたかも何の                    `-x'
              オプションも使用されたことがないように) 処理されます。

       もし、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'
              を複数の入力ファイルをコンパイルする際に使用することは、実行ファ
              イルを出力する時以外は無意味です。

              `-o'オプションを指定しなかった場合のデフォルトは、実行ファイルを作る場
              合は          `a.out'          という名前であり、`source.suffix'
              の形式のファイル名を持ったソースファイルのオブジェクトファイルは
              `source.o'  であり、アセンブラのファイルは   `source.s'   です。
              プリプロセス済みの C 言語は、全て標準出力に送られます。

       -v     (標準エラー出力に対して)
              コンパイルの各ステージで実行されるコマンドを
              表示します。コンパイラドライバ、プリプロセッサおよび本来のコンパイラの
              各バージョン番号も表示します。

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

è¨ç”èªè­ã‚ãƒå»ã‚è½ãƒè…ン
       以下のオプションは、コンパイラが受け付ける                            C
       の方言に関する制御を行ないます:

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

              このオプションは、GNU       C        が持つ        ANSI        C
              との非互換な機能を全て排除します。  例えば、asm,  inline, typeof
              などのァ璽錙璽匹筺unix                  や                  vax
              などの現在使用しているシステムを規定する定義済みマクロなどが抑制されます。
              さらに、好ましくなくかつほとんど使用されない                ANSI
              のトライグラフの機能を使          用可能とし、さらに         `$'
              を識別子の一部として使用でい覆い茲Δ砲靴泙后

              代替ァ璽錙璽匹任△__asm__,      __extension__,      __inline__,
              __typeof__                      は、                     `-ansi'
              が指定された場合でも使用することが可能です。もちろん、  これらを
              ANSI                                                           C
              プログラムで使用することが望ましくないのは当然ですが、`-ansi'
              をつけてコンパイルされる場合でも、インクルードされるヘッダファイル中に
              これらが欺劼任るということは様僂任后   __unix__   や    __vax__
              などの代替定義済みマクロは、                             `-ansi'
              を指定する場合でも指定しない場合でも、利用可能となっています。

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

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

       -fno-asm
              asm,     inline,     typeof      をァ璽錙璽匹箸靴堂鮗瓩靴泙擦鵝
              これらの単語は識別子として解釈されるようになります。これらの代用として
              __asm__,   __inline__,   __typeof__   が使用でい泙后    `-ansi'
              を指定すると、暗黙のうちに                            `-fno-asm'
              を指定したものとみなされます。

       -fno-builtin
              ビルトイン関数のうち、2
              つのアンダースコアで始まるもの以外を認識しなくなり
              ます。現在、この指定は_exit,  abort,  abs,  alloca,  cos,  exit,
              fabs,  labs,  memcmp,  memcpy, sin, sqrt, strcmp, strcpy, strlen
              の関数に影響を及ぼします。

              `-ansi'      オプションを指定すると、alloca       と       _exit
              はビルトイン関数として扱われなくなります。

       -fhosted
              ホスト実行環  (hosted  environment)  用にコンパイルを行います。
              これにより、`-fbuiltin' オプションが邑になり、また、不審な main
              宣言に対して警告を発するようになります。

       -ffreestanding
              フリースタンディング実行環   (freestanding   environment)  用に
              コンパイルを行います。 これにより、`-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 つあります。 `-traditional'  オプションは  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    への変換は許可していますが、
              逆は許していません。

       -fexternal-templates
              テンプレート関数について、その関数が定義された場所にのみ単一のコピー
              を生成することによって、テンプレート宣言に対してより小さなコードを生成
              します                                                      (C++
              のみ)。このオプションを使用して正しいコードを得るためには、
              テンプレートを使用する全てのファイルにおいて、`#pragma
              implementation' (定義) または `#pragma  interface'  (宣言)  を-
              述しておく必要があります。

              `-fexternal-templates'
              を指定してコンパイルを行なう場合には、全てのテンプレートの
              実体は                                                  external
              となります。全ての使用される実体はインプリメンテーション
              ファイル中にまとめて-
              述しておかなければなりません。これはその必要とされ
              る実体に対応した  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  を用いて欺劼気譴討り、さらにそのプログラムを欺劼靴  環-
              に依存して、符号付-
              である、あるいは符号無しであるという暗黙の仮定が
              行なわれています。このオプション、あるいはこの逆のオプションは、デフォル
              トと逆の動作を行なわせることにより、これらのプログラムを正しく動作させ
              ることを可能にします。

              char   型は常に   signed    char    あるいは    unsigned    char
              とは区別された型として扱われます。常にそれらの振舞いがそのどち
              らかと全く同じであるということに関わらず、このような扱いを行います。

       -fsigned-char
              char 型を signed char 型のように符号付い箸靴動靴い泙后

              ただし、このオプションは `-fno-unsigned-char' と等価です。これは
              `-funsigned-char'の否定形です。同様に   `-fno-signed-char'    は
              `-funsigned-char' と等価です。

       -fsigned-bitfields

       -funsigned-bitfields

       -fno-signed-bitfields

       -fno-unsigned-bitfields
              これらのオプションは、明示的に    `signed'   または   `unsigned'
              の指定が行なわれていないビットフィールドに対して、符号つ-
              であるかある
              いは符号なしであるかを制御します。デフォルトではこのようなビットフィール
              ドは符号つい箸覆辰討い泙后なぜなら、                        int
              のような基本的な型は符号つい任△襪箸いε世如∪姐臉-
              がとれるからです。

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

       -fwritable-strings
              文字列定数を書-
              込み可能なデータセグメントに配置し、同内容の文字列を 1  つの共-
              オブジェクトにする処理を行いません。これは、文字定数に書すむ
              ことがでい襪海箸魏渉蠅靴神里離廛蹈哀薀爐箸慮澳浩-
              をとるために提供され                    ています。`-traditional'
              オプションも同様の効果を含みます。

              文字定数に書すむという考えは非常によくない考えです。"定数"
              はまさに定数であり、変化すべい任呂△蠅泙擦鵝

ãƒå»ãƒèžãƒå»ãƒè¹ã‚æœãƒå¥ã‚æ±ã‚ãƒå»ã‚è½ãƒè…ン
       これらのオプションは     C     プリプロセッサを制御します。     各    C
       ソースファイルは、実際にコンパイルする前に、C          プリプロセッサに
       かけられます。

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

       -include file
              file  を、通常の入力ファイルが処理される前に処理します。結果的に
              file
              に含まれる内容は、一番最初にコンパイルされることになります。コマンドラ
              インに指定されたすべての  `-D'  や   `-U'   オプションは、その-
              述された順番に関わらず常に            `-include            file'
              が処理される前に処理されます。全ての  `-include'  や  `-imacros'
              オプションは、それらが欺劼気譴申臠崢未蠅暴萢されます。

       -imacros file
              通常の入力ファイルを処理する前にfile
              を入力として処理しますが、その結果の出力を捨てます。        file
              によって生成された出力は捨てられるため、`-imacros          file'
              の処理結果の影響は、file                                  中に-
              述されたマクロがメインの入力ファイル中で使用可能になることだけです。
              プリプロセッサは、`-imacros              file'              が-
              述された順番に関わらず、これを処理する前に、
              コマンドラインから与えられた全ての      `-D'       や       `-U'
              オプションを評価します。全ての   `-include'   および  `-imacros'
              オプションは、それらが欺劼気譴申臠崢未蠅暴萢されます。

       -idirafter dir
              ディレクトリ  dir  を第   2   インクルードパスに加えます。第   2
              インクルードパス中のディレクトリは、      メインインクルードパス
              (オプション              `-I'              によって追加されます)
              中にヘッダファイルを探した結果発見でい
              かった場合に検索されます。

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

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

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

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

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

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

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

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

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

       -M  [ -MG ]
              プリプロセッサに対してmake
              で使用可能な、オブジェクト間の依存関係を-
              述した出力を生成するように指示
              します。それぞれのソースファイルに対して、プリプロセッサはmake
              のための規則を   1    つ出力します。この出力は、ターゲットとして
              そのソースファイルから生成されるオブジェクトファイルのファイル名をとり、
              依存するファイルのリストとしては                      `#include'
              によってソースファイルに
              読み込まれる全てのファイルの名前が並びます。この    規則は     1
              行、あるいは長い場合には`\'
              と改行を入れて複数行で出力されます。この規則のリストは、プリプロセス済
              みの C プログラムのかわりに、標準出力へと出力されます。

              `-M' は暗黙のうちに `-E' を含みます。

              `-MG'
              を指定すると、見つからないヘッダファイルは生成されたファイルであり、
              それらはソースファイルと同じディレクトリに存在するとみなします。
              これは `-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
              マクロ macro を defn  として定義します。コマンドライン上の全ての
              `-D'                      オプションは                      `-U'
              オプションの処理を行なう前に処理されます。

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

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

       -dD    プリプロセッサに対して、全てのマクロ定義を適切な順番で出力中にそのまま
              出力するように指示します。

       -dN    `-dD'           と似ていますが、マクロの引数と内容を削除します。
              出力には`#define name' のみが含まれます。

ã‚â–ã‚æœãƒéµãƒå±ãƒè–ã‚ãƒå»ã‚è½ãƒè…ン
       -Wa,option
              option      をアセンブラに対するオプションとして渡します。option
              がコンマを含む場合は、そのコンマで区切られた複数のオプションとして与え
              られます。

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

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

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

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

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

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

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

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

       -nostdlib
              リンク時に、標準のシステムライブラリとスタートアップファイルを使用しません。
              指定したファイルのみがリンカに渡されます。

       -static
              ダイナミックリンクをサポートするシステムにおいて、このオプションは共-
              ライブラリとのリンクを抑制します。それ以外のシステムではこのオプションは
              意味を持ちません。

       -shared
              他のオブジェクトとリンクして実行可能プログラムを形成し得る共-
              オブジェクトを
              生成します。ごく少数のシステムでのみ、このオプションはサポートされ
              ています。

       -symbolic
              共-
              オブジェクトを構築する際に、グローバルなシンボルへの参照をバインド
              します。全ての解決でい覆った参照に対して警告を与えます
              (ただしリンクエディタオプション  `-Xlinker  -z  -Xlinker   defs'
              によってこれを無効化した場合を除-
              ます)。ごく少数のシステムでのみ、
              このオプションはサポートされています。

       -Xlinker option
              オプション                                                option
              をリンカに対して渡します。リンカに渡すシステム固-
              のオプションが、  GNU  CC  が理解でい覆い發里任△訃豺腓僕用で-
              ます。

              引数を持ったオプションを渡したい場合は、   `-Xlinker'    を    2
              度使用すれば可能です。1  度目でオプションを渡し、2  度目で引数を
              渡します。例えば `-assert  definitions'  を渡すには、  `-Xlinker
              -assert    -Xlinker   definitions'   のように欺劼垢譴于椎修任后
              `-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'
              で指定されたディレクトリは この方法で検索されます。)

              これに加えて      `-I-'       オプションは、カレントディレクトリ
              (現在の入力ファイルが存在する ディレクトリ) が `#include "file"'
              に対する最初の検索対象となることを抑制します。`-I-'
              によるこの効果を上書い垢詈法はありません。`-I.'
              を指定することによって、コンパイラが起動されたディレクトリが検索
              されることを指定することは可能です。これはプリプロセッサが行なう
              デフォルトの動作とは異なりますが、たいていはこれで十分です。

              `-I-'
              は、ヘッダファイルの検索に標準のシステムディレクトリを使うことを抑制
              するわけではありません。   従って、`-I-'   と   `-nostdinc'   は
              独立です。

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

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

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

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

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

              これと同じ効果を、環曲竸                        GCC_EXEC_PREFIX
              によっても得ることがでい泙后もしこの環-
              変数が定義されていれば、こ
              の値がプレフィックスとして同様に使用されます。もし          `-B'
              オプションと GCC_EXEC_PREFIX 環曲竸瑤料佇が存在した場合は、`-B'
              オプションが最初に使用され、環曲竸瑤麓,忙藩僂気譴泙后

è­æ‹å‘é™ã‚ãƒå»ã‚è½ãƒè…ン
       警告は、本質的に間違いであるわけではありませんが、危険な構造を報告したり、
       エラーがあるかもしれないような部分を示唆する診断メッセージです。

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

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

       -w     全ての警告メッセージを抑制します。

       -Wno-import
              #import の利用による警告メッセージを抑制します。

       -pedantic
              厳密な                ANSI                標準                 C
              言語で規定している全ての警告を表示し、許されていない拡張を
              使用したプログラムを全て拒否します。

              正当な ANSI 標準  C  プログラムは、このオプションの楊気亡悗錣蕕
              コンパイルでい襪戮です     (もっとも、ほんのわずかではありますが
              `-ansi'
              を必要とするものはあります)。しかし、このオプションを使用しない場合、
              GNU                       拡張や伝統的な                       C
              の特徴も、これに加えてサポートされます。このオプション
              を使用すれば、それらは拒絶されます。このオプションを_-pedantic'      は、始まりと終りとが      `__'     である代替-
              ーワードの使用については、警告しません。  同様に   __extension__
              に続く表現についても警告しません。しかし、システムヘッダファイルのみ
              がこの抜け道を使用すべ-
              であり、アプリケーションプログラムはこれを避け るべい任后

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

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

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

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

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

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

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

          o   式文       (expression-statement)       またはコンマ式の左部分が
              一切の副作用を含まない場合です。
              警告を抑制するには、使用しない式を  void   にゥ礇好箸靴堂爾気ぁ
              例えば    `x[i,j]'    といった式は警告されますが、`x[(void)i,j]'
              は警告されません。

          o   符号無しの値が 0 と `>' または `<=' で比較される場合です。

       -Wimplicit-int
              型を指定していない宣言に対して警告します。

       -Wimplicit-function-declaration
              宣言に先立って用いられた関数に対して警告します。

       -Wimplicit
              -Wimplicit-int      および       -Wimplicit-function-declaration
              と同じです。

       -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
              初期化されていない自動変数が使用されています。

              これらの警告は、最適化コンパイルを行なう時のみ発生します。なぜなら、
              コンパイラは最適化を行なう時にのみデータフロー情報を必要とするからです。
              もし    `-O'    を指定しなかった場合は、この警告を得ることはで-
              ません。

              これらの警告は、レジスタ割り当ての対象となった変数についてのみ発生します。
              従って、volatile
              であると宣言された変数や、アドレス上に割り当てられた変数、サイズが
              1,                   2,                   4,                   8
              バイト以外の変数に関してはこれらの警告は発生しません。
              さらに、構造体、共用体、配列については、たとえそれらがレジスタに
              割り当てられたとしても、これらの警告は発生しません。

              ある変数によって計算された値が結局使用されないような変数については、一切の
              警告が生じないことに注意して下さい。このような計算は、警告が表示される前に
              データフロー解析によって削除されます。

              これらの警告をオプションにした理由の一つは、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'
              オプションを結合したものです。これらのオプションは全て、
              たとえマクロとの組み合わせ
              であっても、避けたほうがいいと我々が推奨する用法や、
              簡単に避けることがでい襪伐罅垢信じている用法に関するものです。

       残りの             `-W...'             オプションは             `-Wall'
       によっては暗黙のうちに指定されません。なぜならこれらは、クリーンなプ
       ログラムにおいても、ある状況においては使用することが妥当であると我々が
       考える構造についての警告を行なうオプションだからです。

       -Wtraditional
              伝統的な            C            と            ANSI            C
              において異なった振舞いをする特定の構造について警 告します。

          o   マクロ引数がマクロ本体内の文字列定数に現れるものです。これは、伝統的な
              C        に       おいてはその引数で置換しましたが、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
              ポインタのゥ礇好箸砲いて、そのターゲットに要求される恭条件が
              大いなるようなゥ礇好箸鯀瓦瞳拗陲靴泙后N磴┐  char  * が int *
              へとゥ礇好箸気譴襪函∪或瑤     2、あるいは      4      バイト-
              界でしかアクセスで い覆ぅ泪轡鵑砲いては警告が発せられます。

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

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

       -Waggregate-return
              構造体や共用体を返す関数を定義した場合や、
              それらを呼び出す全ての場合に警告します。   (配列を返すことがで-
              る言語においても、これは警告を引さこします。)

       -Wstrict-prototypes
              引数の型を指定せずに関数を宣言、あるいは定義した場合に警告します。
              (以前に引数の型を指定した宣言が存在する場合には、旧式の関数宣言に対しては
              警告をしません。)

       -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
              関数がインライン宣言されている、あるいは      -finline-functions
              オプションが与えられている場合に、関数をインライン展開で-
              なかった場合 に警告します。

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

ãƒå¦ãƒä¸ãƒå¥ã‚å“ã‚ãƒå»ã‚è½ãƒè…ン
       GNU  CC   は、ユーザのプログラムや   GCC   の双方をデバッグするために、
       多くのオプションを備えています。

       -g     オペレーティングシステムのネイティブのフォーマット (stabs, COFF,
              XCOFF,          DWARF)           でデバッグ情報を生成します。GDB
              はこのデバッグ情報に基づい て動作することがでい泙后

              stabs   フォーマットを使用するほとんどのシステムにおいては、`-g'
              を指定すると、GDB  だけが使用でい詬省なデバッグ情報が使用可能に
              なります。                  この特別の情報は                 GDB
              に対してはよりよいデバッグを行なうことを可能
              としますが、おそらく他のデバッガに対してはクラッシュ、あるいはそのプログラムを
              読めなくしてしまいます。この特別な情報の生成を制御するためには
              `-gstabs+',   `-gstabs',   `-gxcoff+',   `-gxcoff',  `-gdwarf+',
              `-gdwarf' を使用してください (下技仮)。

              他の多くの  C  コンパイラと異なり、GNU  CC  は  `-g'   を   `-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
              (もしサポートされていれば)                                 DWARF
              フォーマットでデバッグ情報の生成を行    います。これはほとんどの
              System    V    Release    4    システムにおいて    SDB    によっ
              て使用される形式です。

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

       -glevel
       -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:functionname'  と欺劼垢襪海箸任海譴蕕魘菠未任-
              ます。 `bb.out' には、いくつかの利用可能な関数がリストされます。
              特別な意味をもつ関数が      4     つあります:     `__bb_jumps__'
              はジャンプ頻度を   `bb.out'    に書そ个靴泙后    `__bb_trace__'
              は基本ブロック列を  `gzip'  にパイプし、  ファイル  `bbtrace.gz'
              に書そ个靴泙后        `__bb_hidecall__'         は         call
              命令をトレースから除外します。    `__bb_showret__'   は   return
              命令をトレースに含めるようにします。

       -dletters
              コンパイル中の                                           letters
              で指定されるタイミングに、デバッグ用のダンプを生成するように指示します。
              これはコンパイラをデバッグするために使用されます。ほとんどのダンプのファイル
              名はソースファイル名に                                         1
              単語をつなげたものになります。(例えば、`foo.c.rtl'            や
              `foo.c.jump' などです)。

       -dM    全てのマクロ定義をダンプし、プリプロセス終了時に出力に書-
              出します。 その他には何も書そ个靴泙擦鵝

       -dN    全てのマクロ名をダンプし、プリプロセス終了時に出力に書-
              出します。

       -dD    全てのマクロ定義をプリプロセス終了時に通常の出力に加えてダンプします。

       -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    以上の全てのダンプを生成します。

       -dm    処理の終了時に、メモリ使用に関する統計情報を標準エラー出力に出力します。

       -dp    どのようなパターンや選択肢が使用されたかを示すコメントをアセンブラ出力
              中のコメントで解説します。

       -fpretend-float
              クロスコンパイラで処理を行なう際に、ホストマシンと同じ浮動小数点フォーマット
              をターゲットマシンが持つかのように振舞わせます。これは浮動小数点定
              数の誤った出力を引さこしますが、実際の命令列はおそらく  GNU  CC
              を ターゲットマシンで起動した場合と同じものとなるでしょう。

       -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'
              が指定されます。フレームポインタを使わないデバッグをサポートしている
              マシンでは、`-fomit-frame-pointer'
              も指定されます。マシンによってはさらにその他のフラグが
              指定されることもあります。

       -O2    さらに最適化を行います。サポートされている最適化手段のうち、
              空間と速度のトレードオフを含まないものはほとんどの全て使用されます。
              例えばループのアンローリングや関数のインライン化は行われません。
              -O    と比較して、このオプションはコンパイル時間と生成コードの-
              能の双方を増加 させます。

       -O3    さらなる最適化を行います。これは                             -O2
              が行う全ての最適化手段に加えて      -finline-functions      も-
              効にします。

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

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

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

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

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

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

       -fmemoize-lookups

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

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

                cout << "This " << p << " has " << n << " legs.\n";

              は、これらの              3             つの手順を             6
              回繰り返すということを意味します。これに対し  て、ソフトウェア-
              ャッシュを使用すると、そのゥ礇奪轡紊悗"ヒット
              "は、コストを劇的に低減することが期待でい泙后I垤なことに、-
              ャッシュ
              の導入によって異なったレイヤの機構を実装することが必要となり、それ
              自身のオーバヘッドが生じてしまいます。`-fmemoize-lookups'
              はこのソフトウェアゥ礇奪轡紊鰺効にします。

              メンバとメンバ関数へのアクセス特権                       (可視)
              はある関数におけるコンテゥ好
              と別の関数におけるものとでは異なるので、        g++         は-
              ャッシュをフラッシュしなければなりません。`-fmemoize-lookups'
              フラグを使用すると、全ての関数をコンパイルするたびに毎回-
              ャッシュを                   フラッシュします。`-fsave-memoized'
              フラグは同一のソフトウェアゥ礇奪轡紊砲弔い董▲灰鵐僖ぅ蕕前回
              コンパイルした関数のコンテゥ好箸、次にコンパイルするコンテ-
              ストと同         一のアクセス特権を佑靴討い襪箸澆覆擦觧には、-
              ャッシュを保持します。
              これは同一クラス中に多くのメンバ関数を定義している時に特に-
              効です。        他のクラスのフレンドになっているメンバ関数を除-
              、同一のクラスに属して
              いる全てのメンバ関数のアクセス特権は、全て同一です。このような場合は
              ゥ礇奪轡紊鬟侫薀奪轡紊垢詆要はありません。

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

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

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

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

       -fomit-frame-pointer
              フレームポインタをレジスタに格納する必要のない関数において、この処理を
              行いません。これはフレームポインタの保存、設定、復帰にかかる命令を省略
              し、さらに、多くの関数でレジスタ変数として使用で-
              る余分なレジスタを
              得ることを可能にします。_

              Vax
              などのいくつかのマシンでは、このフラグは効果を持ちません。なぜならこ
              れらのマシンでは標準の呼び出し手順が自動的にフレームポインタの設定を
              行なってしまい、これが存在しないとしたところで何も節約がで-
              ないからです。       マシン欺劵泪ロ      FRAME_POINTER_REQUIRED
              が、ターゲットマシンがこのフラグをサポートするかどうかを制御しています。

       -finline-functions
              全ての単純な関数を呼び出し側に組み込んでしまいます。コンパイラは
              ヒューリスティックスを用いて、  どの関数がこの方法で組み込むに-
              りるほど単純かを決定します。

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

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

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

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

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

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

       -fno-peephole
              マシン固佑離圈璽廛曄璽觝播化を禁止します。

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

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

       以下のオプションは特殊な最適化に関する制御を行います。`-O2'
       オプションは`-funroll-loops'           と          `-funroll-all-loops'
       を除くこれらの全てのオプションを邑にします。

       `-O'  オプションは通常  `-fthread-jumps'  と  `-fdelayed-branch'   を-
       効とします。ただし、特殊なマシンではデフォルトの最適化に対して
       変更が加えられているかもしれません。

       最適化に関する      "い畉戮いチューニング"      が必要な場合に、以下の
       フラグを使用することが可能です。

       -fstrength-reduce
              ループのストレングスリダクションと繰り返し変数の除去を行います。

       -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++
              は以下のコードに対して、一時オブジェクトを経由せずに  y  を  foo
              への呼び出しの結果から直接初期化します。

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

              このオプションを使用しない場合は、GNU   C++   は最初に   y   をA
              型の適切なコンストラクタを呼び出すことによって初期化します。そして、
              foo       の結果を一時オブジェクトに格納し、最終的には       `y'
              の値を一時オブジェクトの値に入れ換えます。

              デフォルトの振舞い  (`-fno-elide-constructors')   が、ANSI   C++
              標準のドラフトには規定されています。コンストラクタ
              が副作用を含むプログラムに対して、`-felide-constructors'
              を指定すると、そのプログラムは異なった動作をする可能-
              があります。な
              ぜなら、いくつかのコンストラクタの呼び出しが省略されるからです。

       -fexpensive-optimizations
              比較的コストの高いいくつかの些細な最適化を行います。

       -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
              引数         version         は、起動される        GNU        CC
              のバージョンを規定します。これは複数のバージョンが
              インストールされている場合に様僂任后N磴┐弌  version  が `2.0'
              ならば、GNU CC バージョン 2.0 を起動することを意味します。

              `-V'   を指定しなかった場合のデフォルトのバージョンは、GNU    CC
              をインストール
              する時に調整可能です。通常は、もっとも一般的な使用に勧めることがで-
              る バージョンがここに指定されます。

ãƒæ³ã‚è½ãƒé¶ä¾é å­çŒã‚ãƒå»ã‚è½ãƒè…ン
       それぞれのターゲットマシンタイプは、それぞれの特別なオプションを持つ
       ことが可能です。`-m' で始まるオプション群は、様々なハードウェアモデルや
       コンフィギュレーション--例えば         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 命令を含んだ出力を行います。

       -msoft-float
              浮動小数点演算のためにライブラリを呼び出す出力を行います。 _-mshort
              int 型を short int 型のように 16 ビット幅とみなします。

       -mnobitfield
              ビットフィールド命令を使用しません。`-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-fpu

       -msoft-float
              浮動小数点の処理のためにライブラリを呼び出す出力を行います。
              _-msoft-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     シリーズに用いられています。
              このオプションは古い  SparcStation  1,  2,  IPX などにも適用で-
              ます。

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

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

       -mc1   C1           用の出力を行います。これはコンパイラが           C1
              用にコンフィギュレーション を行なわれた時のデフォルトです。

       -mc2   C2           用の出力を行います。これはコンパイラが           C2
              用にコンフィギュレーション を行なわれた時のデフォルトです。

       -margcount
              引数列の前に、引数の数をワードに置くコードを生成します。いくつかの可搬-
              のない                Convex                や               Vax
              のプログラムはこのワードを必要とします。(デバッガは
              不定長引数リストを持つ関数を除いて、このワードを必要としません。これらの
              情報はシンボルテーブルに書かれます。)

       -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
              を参照するコードを生成します。このオプションは、ユーザのコードか
              ら使用で-
              るグローバルレジスタから区別されたグローバルレジスタの集合
              を利用するカーネルのコードをコンパイルする時に使用でい泙后

              ただし、このオプションが使用されている時にも                `-f'
              フラグ中のレジスタ名は通常のユーザモードでの名前を使用します。

       -muser-registers
              通常のグローバルレジスタの集合                        gr96-gr127
              を使用します。これはデフォルトです。

       -mstack-check
              __msp_check
              への呼び出しをそれぞれのスタック調整の後に挿入します。これはしばしば
              カーネルのコードにおいて用いられます。

       以下は、Motorola      88K      アーゥ謄チャのために定義された     `-m'
       オプションです。

       -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
              OCS
              で規定されているように、レジスタの値に対して、スタックフレーム中の
              特定の場所に保存されるという動作を強制します
              (あるいは要求しません)。     DG/UX,    Delta88    SVr3.2,    BCS
              のコンフィギュレーションでは              `-mocs-frame-position'
              をデフォルトとして、それ以外の   88k  コンフィギュレーションでは
              `-mno-ocs-frame-position' をデフォルトとして使用しています。

       -moptimize-arg-area

       -mno-optimize-arg-area
              関数の引数がどのような方法でスタックフレームに格納されるかを指定します。
              `-moptimize-arg-area'
              はスペースを節約しますが、いくつかのデバッガ (GDB  は含まれない)
              を                  クラッシュさせます。`-mno-optimize-arg-area'
              はより標準に従っています。デフォルトでは                     GCC
              は引数エリアの最適化 を行いません。

       -mshort-data-num
              データ参照時に、それらの処理を                                r0
              からの相対参照で行なうことによって小さなコードにすることを可能とします。
              これは値のロードを   (その他の場合は   2  命令かかるところを)  1
              命令で行な                             うことを可能にします。num
              をこのオプションとともに指定することによって、どのデータ参照が影響
              を受けるかを指定することがでい泙后N磴┐     `-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
              における実行時にシーケンシャルな                          整合-
              が必要とされる場合は、`-mserialize-volatile' を使用するべい任后

       -msvr4

       -msvr3 System  V  release  4   (SVr4)   に関連したコンパイラの拡張を邑
              (`-msvr4')                あるいは無効                (`-msvr3')
              にします。これは以下の内容を制御します。

          o   生成するアセンブラの文法の種類     (これは     `-mversion-03.00'
              を使用することによって独立に制御でい泙)。

          o   `-msvr4'    は    C    プリプロセッサに対して   `#pragma   weak'
              を理解させます。

          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
              整数の乗算に対してインラインのコード列を生成します。これはデフォルトです。

       -mcall-lib-mul
              整数の乗算に対して lmul$$ を呼び出します。

       -mfull-fp-blocks
              フルサイズの浮動小数点データブロックを生成します。これは     IBM
              によって推
              奨されている最低限のスクラッチスペースの量を包含します。これはデフォルトです。

       -mminimum-fp-blocks
              浮動小数点データブロック内に特別なスクラッチスペースを含めません。これに
              よって、より小さなコードが生成されますが、実行は遅くなります。
              なぜならスクラッチスペースが動的に確保されるからです。

       -mfp-arg-in-fpregs
              IBM  の関数呼び出し規約とは互換世里覆じ討喀个啓蟒腓鮖藩僂靴泙后
              この規約では浮動小数点引数を浮動小数点レジスタに入れて渡します。
              このオプションを指定すると、varargs.h         や        stdarg.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-type       は       default
              です。この選択はすべてのマシンに対する最長のサイクル数を元にコードを
              生成します。これは、生成されるコードがどの        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 と共に使用される必要があります。

       -mips3 MIPS  ISA  のレベル 3 (64 ビット命令) を含む命令群を出力します。
              -mcpu=r4000 スイッチは、 -mips2 と同時に使用する必要があります。

       -mint64

       -mlong64

       -mlonglong128
              これらのオプションは現在動作しません。

       -mmips-as
              MIPS        アセンブラのためのコードを生成し、        mips-tfile
              を起動して通常のデバッグ情報を追加します。     これは      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)
              を呼び出すコードを生成します。

       -mmips-tfile

       -mno-mips-tfile
              -mno-mips-tfile            スイッチを指定すると、           MIPS
              アセンブラがデバッグサポートのために生成したオブジェクトファイルに対し、
              mips-tfile       を使用した後処理を行いません。       mips-tfile
              が実行されないと、デバッガからはローカル変数を扱うことがで-
              ません。         さらに、         stage2        と        stage3
              のオブジェクトはアセンブラに渡される一時的なファイル名をオブジェクトファイル
              中に埋め込まれて持っており、このためそれらを比較した場合に同一のも
              のとはみなされません。

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

       -nocpp MIPS        アセンブラに、ユーザアセンブラファイル         (`.s'
              拡張子を持ちます)
              に対するアセンブル時のプリプロセッサの起動を抑制さ せます。

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

       -m486

       -mno-486
              386                         ではなく                         486
              に最適化されたコードを出力する、あるいはその逆を行な
              う指定を行います。486         用に生成されたコードは         386
              で実行可能であり、逆も また可能です。

       -mpentium
              -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, および pentiumpro  です。  -march=cpu  type
              を指定すると -mcpu=cpu type も指定されたものとみなします。

       -msoft-float
              浮動小数点演算のためにライブラリを呼び出す出力を行います。 _-msoft-float'
              を使用した場合でも、いくつかの浮動小数点命令が生成されます。

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

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

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

       -mprofiler-epilogue

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

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

       -mpa-risc-1-0
              PA 1.0 プロセッサ用のコードを出力します。

       -mpa-risc-1-1
              PA 1.1 プロセッサ用のコードを出力します。

       -mkernel
              カーネルに適したコードを生成します。特に、引数の  1  つとして DP
              レジスタを  とる   add   命令の使用を抑制し、その代わりに、addil
              命令を生成します。これは                                   HP-UX
              リンカの深刻なバグを避けるための措置です。

       -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-type    は    kb
              です。その他の選択としては ka, mc, ca, cf, sa, sb があります。

       -mnumerics

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

       -mleaf-procedures

       -mno-leaf-procedures
              葉に位置する手続い砲弔い董      call      命令と同様に      bal
              命令でも呼び出すことを可能とします  (あるいは、しません)。これは
              bal                   命令がアセンブラ、またはリンカによって置-
              換えられ得る場合には、直接呼
              び出しに対して効率の良いコードを得ることがで-
              ます。ただし、それ以外の場
              合は効率の良くないコードを生成します。例えば、関数へのポインタ経由の呼び
              出しや、この最適化をサポートしないリンカを使用した場合などがこれ
              に該当します。

       -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           が同時に仮定されてしまい、無効化で-
              ないというバグを持っています。

       以下は、DEC Alpha 用に定義された `-m' オプションです。

       -mno-soft-float

       -msoft-float
              浮動小数点操作に対して、ハードウェアによる浮動小数点命令を使用します
              (し  ません)。もし、-msoft-float が指定された場合は、`libgcc1.c'
              内の関数が浮動小数点演算に使用されます。ただし、これらのルーチンが
              浮動小数点演算をエミュレートするルーチンによって置-
              換えられているか、
              そのようなエミュレーションルーチンを呼び出すようにコンパイルされている
              のでない限り、これらのルーチンは浮動小数点演算を行なってしまいます。浮動小
              数点演算のない                                             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
              に検索します。アセンブラがこのオプションを使用します。

ã‚é­ãƒç’ãƒå»ç”è¨æˆã‚ãƒå»ã‚è½ãƒè…ン
       これらのマシン独立オプションは、
       コード生成にて使用されるインタフェース規約を制御します。

       これらのほとんどは       `-f'      で始まります。これらのオプションは-
       効形式と無効形式の  2  つの形式を持っ  ています。`-ffoo'   の無効形式は
       `-fno-foo'
       です。以下に挙げる表においては、このうち、デフォルトではない片
       方のみが挙げられています。`no-'
       を追加するか、削除するかによって双方の形式を得ることがでい泙后

       -fnonnull-objects
              参照型によって参照されるオブジェクトはヌルでないと仮定します
              (C++ のみ)。

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

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

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

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

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

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

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

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

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

       -fno-common
              bss
              セクション中の初期化されていないグローバル変数に対してでも、共通ブロック
              に生成するのではなく、領域を割り当てます。このオプションは、(extern
              をつけずに)                同一の変数を宣言した                2
              つのコンパイルに対して、リンク時
              にエラーを発生するという効果があります。このオプションは、常にこのような動
              作を行なうシステムにおいても、プログラムが正常に動作するかどうかを検査
              する場合にのみ様僂任后

       -fno-ident
              `#ident' ディレクティブを無視します。

       -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
              はレジスタ名でなければなりません。受け付けられるレジスタ名はマシン固
              佑任△蝓▲泪轡鶺述マクロファイル内の  REGISTER_NAMES  マクロに-
              述されたものです。

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

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

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

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

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

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

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

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

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

       #pragma interface
              (C++                                                       のみ)
              このディレクティブを、オブジェクトクラスを定義しているヘッダファイル中
              に使用することによって、それらのクラスを使用するほとんどのオブジェクト
              ファイルの大い気鮓詐させることがでい泙后D名錣蓮    特定の情報
              (インラインメンバ関数のバックアップコピー、デバッグ情報、
              仮想関数実現のための内部テーブル)
              の複製がそのクラス定義をインクルードした
              それぞれのオブジェクトファイル中に置かれます。
              このプラグマを使用することによって、このような複製を防ぐことが
              可能となります。`#pragma                              interface'
              を含んだヘッダファイルをインクルードした場合は、これらの追加情報
              は生成されません       (ただし、メインの入力ソースファイル自身が
              `#pragma          implementation'         を含んでいる場合を除-
              ます)。そのかわり、オブジェクトファイルは
              リンク時に解決される参照を含むことになります。

       #pragma implementation

       #pragma implementation "objects.h"
              (C++                                                       のみ)
              インクルードされたヘッダファイルによる完全な出力を生成させたい
              (またそ                            れをグローバルに可視化したい)
              場合には、メインの入力ファイル中でこの
              プラグマを使用します。この場合、インクルードされるヘッダファイルは、`#pragma
              interface'
              を使用していなければなりません。インライン関数のバックアップ情報、
              デバッグ情報、仮想関数実現用の内部テーブルは、全てインプリメンテーション
              ファイル中に生成されます。

              `#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        標準ライブラリ、intro(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; Debugging 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.

ãƒä¸ã‚°
       バグを報告する方法については、GCC マニュアルを参照してください。

COPYING

       Copyright 1991, 1992, 1993 Free Software Foundation, Inc.

       Permission is granted to make and distribute verbatim  copies  of  this
       manual  provided  the  copyright  notice and this permission notice are
       preserved on all copies.

       Permission is granted to copy and distribute modified versions of  this
       manual  under  the  conditions  for verbatim copying, provided that the
       entire resulting derived work is  distributed  under  the  terms  of  a
       permission notice identical to this one.

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

ä½éƒè€…
       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: FreeBSD 向けに修正,
       査閲