基本を再チェック〜gcc〜 |
YAMAMORI Takenori ●yamamori |
gccには,ほかにもたくさんのオプションがあります. 詳しくは,gccのオンラインマニュアルや, gccとともにインストールされるgcc.infoファイルをご参照下さい.
ここでは筆者がよく用いるいくつかのオプションを紹介します.
「-pipe」を付けると,cpp・cc1・asの処理がUNIXのパイプでつながり, 一時ファイルを作らずに効率良く処理が行なわれるため, コンパイル速度が少し速くなります.ただし,その効果は環境に依存します. 詳しい実行内容は,「-v」オプションを付けて確認してみると面白いでしょう.
「-fomit-frame-pointer」は,フレームポインタを省略するためのオプションです. C/C++では関数が呼び出された際に, スタックに積まれた引数を指し示すためのフレームポインタを設定しています. しかしこのフレームポインタは多くの場合は必要なく, フレームポインタを省略することによりバイナリの最適化が図れます. ただし,デバッガを使ってのバイナリファイルのデバッグは不可能になります. また,このオプションはCPUにも依存し,x86やm68kなどのCPUを用いた環境では 効果がありますが,SPARCなどの場合は引数の受渡しにレジスタウィンドウを 用いているため,このオプションを付けても変化はありません.
「-s」は実際にはldに渡されるオプションで, 実行バイナリのシンボルテーブルを最初からstrip(削除)するためのオプションです. 通常の実行バイナリには,実行時には必要のないシンボルテーブルも含まれています. このシンボルテーブルは,バイナリファイルをデバッグする際には必要ですが, その必要がなければstripしてハードディスクの使用量を節約するべきでしょう. シンボルテーブルのstripは,stripコマンドを使っても行なえますが, 最初からgccのオプションとして「-s」を付けておけば, stripし忘れることがないので便利です.