gcc g O 優化選項說明

2021-08-19 21:15:46 字數 822 閱讀 8281

查查gcc手冊就知道了,每個編譯選項都控制著不同的優化選項 下面從網路上copy過來的,真要用到這些還是推薦查閱手冊 

-o設定一共有五種:-o0、-o1、-o2、-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是不推薦的。

編譯選項說明

g 常用命令選項 選項解釋 ansi c只編譯並生成目標檔案。dmacro 以字串 1 定義 macro 巨集。dmacro defn 以字串 defn 定義 macro 巨集。e只執行 c 預編譯器。g生成除錯資訊。gnu 偵錯程式可利用該資訊。idirectory 指定額外的標頭檔案搜尋路徑di...

Makefile選項說明

d 條件選擇編譯 i 標頭檔案搜尋路徑 l 連線靜態庫 l 連線庫的路徑 wall 開啟警告開關 ar 靜態庫打包命令的名字,預設值是ar。arflags 靜態庫打包的選項,預設值rv as 彙編器的名字,預設值是as。asflags 彙編器的選項,沒有定義。cc c編譯器的名字,預設值是cc。cf...

編譯選項說明

一 build 執行 編譯的主機,正常的話就是你的主機系統。這個引數一般由config.guess來猜就可以。當然自己指定也可以。二 host 編譯出來的二進位制程式所執行的主機,因為絕大多數是如果本機編譯,本機執行。所以這個值就等於build。只有交叉編譯的時候 也就是本機編譯,其他系統機器執行 ...