我已经从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