知っていると便利な gcc のオプション
back
GNU gcc を使う際に知っていると便利なオプションを挙げておきます。
注意: これが全部ではありません。gcc には、ほかにも
プロセッサ依存の細かいオプションが山のようにありますが、それらは
ふつうあまり利用しないので省略しました。
一般的なオプション
- -c, -o, -I, -g, -O, -L, -l
- 省略。それくらい知ってること。ちなみに
-L と -l は ld へのオプションであり、順番が重要である。
- -pipe
- 各ステージ間で情報のやりとりをするのに temporary file を使わず、
pipe を使うようにする。このオプションが Makefile などに
含まれているときは、たいてい除いたほうがよい。なぜなら、
多くのシステムでは、アセンブラ側がパイプに対応してないから。
言語仕様に関するオプション
- -ansi
- 厳格な ANSI 仕様でコンパイルする。このとき、
__STRICT_ANSI__ マクロが定義される。
- -traditional
- 従来の C 仕様でコンパイルする。
- -funsigned-char
- 何も指定されていないただの char は、すべてデフォルトで
unsigned char とみなす。
- -fsigned-char
- 何も指定されていないただの char は、すべてデフォルトで
signed char とみなす。
マクロの使用とデバッグに関するオプション
- -Dmacro, -Dmacro=value [知ってると便利]
- 臨時にマクロを定義する。
- -Umacro
- 臨時にマクロを未定義にする。
- -E
- マクロの展開だけをする。
- -C (with -E)
- マクロの展開だけをするとき、コメントは残す。
- -P (with -E)
- マクロの展開だけをするとき、#line 行を生成しない。
- -M (with -E) [知ってると便利]
- ソースに include されているファイル名をすべて表示する。
- -MM (with -E)
- ソースに include されているファイル名をすべて表示するが、
システムが最初から include しているものは除く。
- -dM (with -E) [知ってると便利]
- ソース中で一度でも参照されたマクロ定義をすべて表示する。
- -dD (with -E)
- ソース中のマクロ定義、およびプロトタイプ定義をすべて表示する。
リンクに関するオプション
- -rpath
- ダイナミックリンクライブラリ .so の置き場を指定するオプション。
しかし、これは gcc は認識してくれない。gcc から ld を
呼び出すときにこのオプションを渡すには、以下に示すような -Xlinker
を使うか、環境変数 LD_RUN_PATH に .so のパスを入れて gcc を
実行すればよい。
- -Xlinker
- ld に渡すオプションを指定する。1つのトークンにつき -Xlinker を
一回使わねばならない。たとえば ld に“-rpath /usr/local/lib”を
渡したいときは、-Xlinker -rpath -Xlinker /usr/local/lib
と指定する。
- -static
- 実行形式ファイルの生成にダイナミックリンクを使わない。
- -shared
- Shared object (.so) を生成する (サポートしている機種のみ)。
警告オプション
- -fsyntax-only
- 構文を検査する。なにも出力しない。
- -w
- Warning メッセージをすべて抑制する。
- -pedantic
- Gcc の言語拡張機能をすべて無効にする。
- -W
- 余計な warning まで出力する。
- -Wimplicit
- 暗黙の宣言をすべて警告する。
- -Wreturn-type
- 帰り値の宣言がされておらず、
default として int を返すとみなされた関数を警告する。
- -Wunused
- 使用されていないローカル変数について警告する。
- -Wswitch
- switch 文を enum された型に適用している場合で、
定数としては存在するのに case がない場合を警告する。
- -Wcomment
- コメントが入れ子になっていそうなもの (/* が 2回現れる)
を警告する。ふつう、コメントは入れ子にできない。
- -Wformat
- Printf や scanf などで、フォーマット中に指定した
引数と実際の個数が一致していなければ警告する。
- -Wuninitialized
- 初期化されずに参照された変数について警告する。
- -Wall
- 上にあげた警告オプションをすべて有効にする。
デバッグ中は、これがいちばんいい。
Last Modified: Sat May 12 15:46:48 EDT 2007 (05/13, 04:46 JST)
Yusuke Shinyama