Chapter 27. gcc のデフォルト値の最適化

Note: Brian Gallewによる御提供

gcc において,ある特定のフラグをデフォルトで使うための設定としては, 単に/usr/local/lib/gcc-lib/プラットフォーム/バージョン/specs ファイルを編集するだけです. このファイルのフォーマットはかなりシンプルです.ファイルはいくつかの セクションに別れており,各セクションは 3 行ずつあります.最初の行は "*セクション名:" (たとえば "*asm:")です. 2番目の行はフラグのリストで,3番目の行は空白です.

メイクするために一番簡単な変更は,指定したいデフォルトのフラグを 適切なセクションのリストに追加することです.例を挙げると,私は デフォルトの位置に gcc 2.7.2 がインストールされた '486 で動いている linux を持っている としましょう.ファイル /usr/local/lib/gcc-lib/i486-linux/2.7.2/specs の 13 行目に以下のセクションがあります:

- ----------SECTION----------
*cc1:


- ----------SECTION----------
これでわかるように,何もデフォルトのフラグが設定されていませんね. もし私が C のコードをコンパイルする際に,常に "-m486 -fomit-frame-pointer" を使いたいとすると,ここを以下のように 変更すればいいことになります:
- ----------SECTION----------
*cc1:
- -m486 -fomit-frame-pointer

- ----------SECTION----------
もし私が,そのへんにころがっているもう 1 つの古い linux box 用に 386 のコードを生成したいとすれば,このようにします.
- ----------SECTION----------
*cc1:
%{!m386:-m486} -fomit-frame-pointer

- ----------SECTION----------
これをやっておくと,コマンドラインで -m386 が指定されない限り, 常にフレームポインタ(frame pointers)を省略し,486 で最適化された コードを吐くようになります.

実際に,specs ファイルでは非常に多くのカスタマイズをすることができます. しかしながら,これらの変更はグローバルであり,システム内のすべての ユーザに影響を及ぼすことを忘れないでください.