2010-06-29 78 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>参数一起使用。

相关问题