第六十六章. gcc 缺省优化

注意:Brian Gallew 提供
配置 gcc ,使之缺省使用某些标志只是一个简单的对文件 /usr/local/lib/gcc-lib/platform/version/specs 的编辑工作.这个文件的格式相当简单.这个文件分成段,每个段三行长.第一行是 "*section_name:" (段名称)(例如 "*asm:").第二行是一个标志的列表,第三行是空白.

最简单的修改是把需要的缺省标志附加到合适段的列表里面.作为例子,让我们假设我有一台运行 linux 的486,上面装有装在缺省位置的 gcc 2.7.2.在文件 /usr/local/lib/gcc-lib/i486-linux/2.7.2/specs 里,我发现了下面的 13 行:

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


- ----------SECTION----------
如你所见,这里没有任何缺省标志.如果我总是希望用 "-m486 -fomit-frame-pointer" 标志编译 C 代码,我会把它改成:
- ----------SECTION----------
*cc1:
- -m486 -fomit-frame-pointer

- ----------SECTION----------
如果我想为别的使用老版本的 linux 机器的人生成386代码,我会把这些改成下面这样:
 
- ----------SECTION----------
*cc1:
%{!m386:-m486} -fomit-frame-pointer

- ----------SECTION----------
这样将总是忽略帧指针,而且除非在命令行声明 -m386 否则将总是制作486优化代码.
 

你实际上可以在 specs 文件里做大量的客户化的工作.不过要记住,这些改变是全局性的,将影响所有使用系统的用户.