我已經從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中與版本變化進行檢查。(因爲這對性能和功能的影響。)
我已經從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中與版本變化進行檢查。(因爲這對性能和功能的影響。)
我在這裏的gcc 4.3.3版本沒有你所抱怨的行爲。我自己編譯它,所以我非常肯定,你所看到的變化必須有另一個原因,而不僅僅是gcc版本(比如編譯爲64位,一直使用sse AFAIR)。
海灣合作委員會已發佈通知的行爲變化的筆記。它們與gcc源代碼分發包裝在一起,並可在網上找到。對於gcc 4.3,請參閱http://gcc.gnu.org/gcc-4.3/changes.html。
GCC -Q -v(inputfile中)
只需基本微型C或cpp文件作爲輸入文件。應該給你一個默認傳遞給gcc的所有選項的大名單,其中一個可能會導致sse fp數學啓用。
除了編制一個特定的文件-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
。
對於特定於目標的選項,除了-Q --help=target
之外,還可以使用-Q -O<n> --help=optimize
來顯示在給定優化級別打開或關閉哪些優化程序通道。 -Q
也可以與其他--help=<blah>
參數一起使用。
gcc -Q -v:「options passed」和「options enabled」兩個輸出之間有什麼區別? – Maximilian 2016-07-07 10:51:32