資源描述:
《gcc編譯器選項及優(yōu)化提示》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、[原創(chuàng)]GCC編譯器選項及優(yōu)化提示很多弟兄可能都很關(guān)心如何優(yōu)化編譯自己的程序,雖然本人不贊成"骨灰"玩法,卻也不得不承認(rèn)這是掌握gcc的絕佳途徑;因此獻(xiàn)上此帖,以供各位玩家參考,絕對原創(chuàng)噢============================大多數(shù)程序和庫在編譯時默認(rèn)的優(yōu)化級別是"2"(使用gcc選項:"-O2")并且在Intel/AMD平臺上默認(rèn)按照i386處理器來編譯。如果你只想讓編譯出來的程序運(yùn)行在特定的平臺上,就需要執(zhí)行更高級的編譯器優(yōu)化選項,以產(chǎn)生只能運(yùn)行于特定平臺的代碼。一種方法是修改每個源碼包中的Makefile文件,在其中尋找CF
2、LAGS和CXXFLAGS變量(C和C++編譯器的編譯選項)并修改它的值。一些源碼包比如binutils,gcc,glibc等等,在每個子文件夾中都有Makefile文件,這樣修改起來就太累了!另一種簡易做法是設(shè)置CFLAGS和CXXFLAGS環(huán)境變量。大多數(shù)configure腳本會使用這兩個環(huán)境變量代替Makefile文件中的值。但是少數(shù)configure腳本并不這樣做,他們必須需要手動編輯才行。為了設(shè)置CFLAGS和CXXFLAGS環(huán)境變量,你可以在bash中執(zhí)行如下命令(也可以寫進(jìn).bashrc以成為默認(rèn)值):exportCFLAGS="-O
3、3-march="&&CXXFLAGS=$CFLAGS這是一個確保能夠在幾乎所有平臺上都能正常工作的最小設(shè)置。"-march"選項表示為特定的cpu類型編譯二進(jìn)制代碼(不能在更低級別的cpu上運(yùn)行),Intel通常是:pentium2,pentium3,pentium3m,pentium4,pentium4m,pentium-m,prescott,nocona說明:pentium3m/pentium4m是筆記本用的移動P3/P4;pentium-m是迅馳I/II代筆記本的cpu;prescott是帶SSE3的P4(以滾燙到可以煎雞蛋而
4、聞名);nocona則是最新的帶有EMT64(64位)的P4(同樣可以煎雞蛋)AMD通常是:k6,k6-2,k6-3,athlon,athlon-tbird,athlon-xp,athlon-mp,opteron,athlon64,athlon-fx用AMD的一般都是DIYer,就不必解釋了吧。如果編譯時沒有抱怨"segmentationfault,coredumped",那么你設(shè)定的"-O"優(yōu)化參數(shù)一般就沒什么問題。否則請降低優(yōu)化級別("-O3"->"-O2"->"-O1"->取消)。個人意見:服務(wù)器使用"-O2"就可以了,它是最安全的優(yōu)化參數(shù)(
5、集合);桌面可以使用"-O3";不鼓勵使用過多的自定義優(yōu)化選項,其實他們之間沒什么明顯的速度差異(有時"-O3"反而更慢)。編譯器對硬件非常敏感,特別是在使用較高的優(yōu)化級別的時候,一丁點的內(nèi)存錯誤都可能導(dǎo)致致命的失敗。所以在編譯時請千萬不要超頻你的電腦(我編譯關(guān)鍵程序時總是先降頻然的)。注意:選項的順序很重要,如果有兩個選項互相沖突,則以后一個為準(zhǔn)。比如"-O3"將打開-finline-functions選項,但是可以用"-O3-fno-inline-functions"既使用-O3的功能又關(guān)閉函數(shù)內(nèi)嵌功能。更多的優(yōu)化選項請參見:http://gc
6、c.gnu.org/onlinedocs/gcc-3....e-Options.htmlhttp://gcc.gnu.org/onlinedocs/gcc-3....4-Options.htmlhttp://gcc.gnu.org/onlinedocs/gcc-4....e-Options.htmlhttp://gcc.gnu.org/onlinedocs/gcc-4....4-Options.html所有GCC選項完整列表參見:http://gcc.gnu.org/onlinedocs/gcc-3....n-Summary.htmlhttp://
7、gcc.gnu.org/onlinedocs/gcc-4....n-Summary.html有兩個頁面值的參考:(對于gentoo-1.4)比較安全的優(yōu)化選項http://www.freehackers.org/gentoo/gc...flag_gcc3.html(對于gentoo-1.4)進(jìn)階優(yōu)化選項http://www.freehackers.org/gentoo/gc...g_gcc3opt.html*******************************************************************哦,忘了說
8、一聲,"-O2"已經(jīng)啟用絕大多數(shù)安全的優(yōu)化選項了,所以其實你不必對那一堆選項發(fā)愁。先說說"-O3"在"-O2"基礎(chǔ)上增加的