Provided by: manpages-ja_0.5.0.0.20110915-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     以下のイベントに対して、特別な警告メッセージを表示します。

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

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

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

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

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

          ·   式文  (expression-statement) またはコンマ式の左部分が 一切の副作
              用を含まない場合です。  警告を抑制するには、使用しない式を  void
              にキャストして下さい。  例えば `x[i,j]' といった式は警告されます
              が、`x[(void)i,j]' は警告されません。

          ·   符号無しの値が 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  において異なった振舞いをする特定の構造につ
              いて警 告します。

          ·   マクロ引数がマクロ本体内の文字列定数に現れるものです。これは、伝
              統的な C に おいてはその引数で置換しましたが、ANSI C  においては
              定数の一部として扱わ れます。

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

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

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

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

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

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

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

       -Wwrite-strings
              文字定数に対して、型 const char[length] を与え、非-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 回繰り返すということを意味します。こ
              れに対し  て、ソフトウェアキャッシュを使用すると、そのキャッシュ
              への“ヒット  ”は、コストを劇的に低減することが期待できます。不幸
              なことに、キャッシュ  の導入によって異なったレイヤの機構を実装す
              ることが必要となり、それ      自身のオーバヘッドが生じてしまいま
              す。`-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  のバージョンを規定します。こ
              れは複数のバージョンが  インストールされている場合に有用です。例
              えば、 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
              浮動小数点演算のためにライブラリを呼び出す出力を行います。 警告:
              この必須のライブラリは GNU CC の一部としては含まれません。通常は
              そのマシン  の一般的な  C   コンパイラの提供するものを使用します
              が、これは通常の方法  ではクロスコンパイルで直接使用することはで
              きません。クロスコンパイルを行  ないたい場合は、自分自身で必要な
              ライブラリ関数を用意する必要があります。

       -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
              浮動小数点の処理のためにライブラリを呼び出す出力を行います。  警
              告: SPARC 用の GNU 浮動小数点ライブラリは存在しません。 通常はそ
              のマシンの一般的な C コンパイラの提供するものを使用しますが、 こ
              れは通常の方法ではクロスコンパイルで直接使用することはできませ
              ん。 クロスコンパイルを行ないたい場合は、 自分自身で必要なライブ
              ラリ関数を用意する必要があります。

              -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 をこのオプションとともに指定することによって、どの
              データ参照が影響      を受けるかを指定することができます。例えば
              `-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') にします。これは以下の内容を
              制御します。

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

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

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

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

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

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

       -mabicalls

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

       -mhalf-pic

       -mno-half-pic
              -mhalf-pic  スイッチは、テキストセクション中に参照を配置する代わ
              りに、外部参照を行  なうポインタをデータセクションに配置し、それ
              をロードする動作を指定します。  このオプションは現在まだ動作しま
              せん。 -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
              浮動小数点演算のためにライブラリを呼び出す出力を行います。 警告:
              この必須のライブラリは GNU CC の一部としては含まれません。通常は
              そのマシンの   一般的な  C  コンパイラの提供するものを使用します
              が、これは通常の方法  ではクロスコンパイルで直接使用することはで
              きません。クロスコンパイルを行  ないたい場合は、自分自身で必要な
              ライブラリ関数を用意する必要があります。

              関数が浮動小数点数を返す時に 80387  レジスタスタックを使用するマ
              シンに おいては、`-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++  のみ) このディレクティブを、オブジェクトクラスを定義してい
              るヘッダファイル中  に使用することによって、それらのクラスを使用
              するほとんどのオブジェクト  ファイルの大きさを減少させることがで
              きます。通常は、 特定の情報  (インラインメンバ関数のバックアップ
              コピー、デバッグ情報、  仮想関数実現のための内部テーブル) の複製
              がそのクラス定義をインクルードした  それぞれのオブジェクトファイ
              ル中に置かれます。  このプラグマを使用することによって、このよう
              な複製を防ぐことが 可能となります。`#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 向けに修正,
       査閲