gcc/g++ -O 優化選項說明

查查gcc手冊就知道了,每一個編譯選項都控制着不一樣的優化選項 下面從網絡上copy過來的,真要用到這些仍是推薦查閱手冊
-O設置一共有五種:-O0、-O一、-O二、-O3和-Os。
除了-O0之外,每個-O設置都會多啓用幾個選項,請查閱gcc手冊的優化選項章節,以便了解每一個-O等級啓用了哪些選項及它們有何做用。
讓咱們來逐一考察各個優化等級:
-O0:這個等級(字母「O」後面跟個零)關閉全部優化選項,也是CFLAGS或CXXFLAGS中沒有設置-O等級時的默認等級。這樣就不會優化代碼,這一般不是咱們想要的。
-O1:這是最基本的優化等級。編譯器會在不花費太多編譯時間的同時試圖生成更快更小的代碼。這些優化是很是基礎的,但通常這些任務確定能順利完成。
-O2:-O1的進階。這是推薦的優化等級,除非你有特殊的需求。-O2會比-O1啓用多一些標記。設置了-O2後,編譯器會試圖提升代碼性能而不會增大致積和大量佔用的編譯時間。
-O3:這是最高最危險的優化等級。用這個選項會延長編譯代碼的時間,而且在使用gcc4.x的系統裏不該全局啓用。自從3.x版本以來gcc的行爲已經有了極大地改變。在3.x,-O3生成的代碼也只是比-O2快一點點而已,而gcc4.x中還未必更快。用-O3來編譯全部的軟件包將產生更大致積更耗內存的二進制文件,大大增長編譯失敗的機會或不可預知的程序行爲(包括錯誤)。這樣作將得不償失,記住過猶不及。在gcc 4.x.中使用-O3是不推薦的。
-Os:這個等級用來優化代碼尺寸。其中啓用了-O2中不會增長磁盤空間佔用的代碼生成選項。這對於磁盤空間極其緊張或者CPU緩存較小的機器很是有用。但也可能產生些許問題,所以軟件樹中的大部分ebuild都過濾掉這個等級的優化。使用-Os是不推薦的。緩存

詳細解釋請查看連接: https://blog.csdn.net/qq_31108501/article/details/51842166網絡

相關文章
相關標籤/搜索