Chapter 5. 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 文件裡做大量的客戶化的工作. 不過要記住,這些改變是全局性的,將影響所有使用系統的使用者.