默认启用了gcc 4.3.3编译器选项

18

我从gcc 4.0.3版本升级到4.3.3版本,并发现在gcc 4.3.3中,默认将-mfpmath设置为sse,这实际上导致了我的应用程序出错。 在4.0.3中,-mfpmath是387。

我想知道如何获取gcc为给定版本启用的所有默认选项。 我该如何转储gcc编译时使用的所有选项集。 这使我能够比较版本4.0.3和4.3.3。

通常情况下,在进行gcc版本更改之前,需要检查的综合列表将非常有帮助。(因为这会影响性能和功能。)

4个回答

29
gcc -Q -v

只需一个基本的 C 或 CPP 文件作为输入文件,就可以获得由 GCC 默认传递的所有选项的大列表,其中之一可能会导致启用 SSE 浮点数运算。


使用gcc -Q -v命令时,“选项传递”和“选项启用”两个输出之间有什么区别? - Maximilian

23

除了编译指定文件-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


5

除了针对特定目标的选项使用-Q --help=target外,您还可以使用-Q -O<n> --help=optimize来显示在给定优化级别下哪些优化器传递是开启或关闭的。 -Q似乎也可以与其他--help=<blah>参数一起使用。


2
  1. 我这里使用的gcc 4.3.3版本没有你所抱怨的那种行为。我自己编译了它,所以我非常确定你看到的变化一定不是仅仅由于gcc版本引起的(比如编译为64位,一直都使用sse)。

  2. gcc有发布说明,通知行为变化。它们与gcc源代码分发一起打包,并可在网上获得。对于gcc 4.3,请参见http://gcc.gnu.org/gcc-4.3/changes.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接