2010-06-29 77 views
13

我已經從gcc版本4.0.3移動到4.3.3,並意識到默認在gcc 4.3.3中將-mfpmath設置爲sse。這實際上導致我的應用程序出錯。 在4.0.3中,-mfpmath是387.gcc 4.3.3缺省情況下啓用編譯器選項

我想知道如何獲得gcc對給定版本啓用的所有默認選項。 如何在編譯時轉儲gcc使用的所有選項集。 這使我能夠比較版本4.0.3和4.3.3。

一般來說這將是巨大的,如果我能知道的完整列表的東西需要纔去GCC中與版本變化進行檢查。(因爲這對性能和功能的影響。)

回答

2
  1. 我在這裏的gcc 4.3.3版本沒有你所抱怨的行爲。我自己編譯它,所以我非常肯定,你所看到的變化必須有另一個原因,而不僅僅是gcc版本(比如編譯爲64位,一直使用sse AFAIR)。

  2. 海灣合作委員會已發佈通知的行爲變化的筆記。它們與gcc源代碼分發包裝在一起,並可在網上找到。對於gcc 4.3,請參閱http://gcc.gnu.org/gcc-4.3/changes.html

22

GCC -Q -v(inputfile中)

只需基本微型C或cpp文件作爲輸入文件。應該給你一個默認傳遞給gcc的所有選項的大名單,其中一個可能會導致sse fp數學啓用。

+0

gcc -Q -v:「options passed」和「options enabled」兩個輸出之間有什麼區別? – Maximilian 2016-07-07 10:51:32

17

除了編制一個特定的文件-Q -v,其輸出的傳遞並啓用選項列表,以及一個很多其他的版本,配置和定時信息,您還可以使用gcc -Q --help=target只列表默認具體目標編譯器選項:

$ gcc --version | head -1 
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 
$ gcc -Q --help=target 
The following options are target specific: 
    -m128bit-long-double     [disabled] 
    -m32         [disabled] 
    -m3dnow        [disabled] 
    -m3dnowa        [disabled] 
    -m64         [enabled] 
    -m80387        [enabled] 
    -m8bit-idiv       [disabled] 
    -m96bit-long-double     [enabled] 
    -mabi= 
    -mabm         [disabled] 
    -maccumulate-outgoing-args   [disabled] 
    -maes         [disabled] 
    -malign-double      [disabled] 
    -malign-functions= 
    -malign-jumps= 
    -malign-loops= 
    -malign-stringops      [enabled] 
    -mandroid        [disabled] 
    -march=        x86-64 
... 

也包括具體的目標,彙編器和連接器選項(而不是目前其默認設置)的列表,使用--target-help代替--help=target

1

對於特定於目標的選項,除了-Q --help=target之外,還可以使用-Q -O<n> --help=optimize來顯示在給定優化級別打開或關閉哪些優化程序通道。 -Q也可以與其他--help=<blah>參數一起使用。

相關問題