默认情况下启用gcc 4.3.3编译器选项

pv.*_*pv. 16 c++ compiler-construction optimization gcc

我已经从gcc版本4.0.3移动到4.3.3并且意识到-mfpmath在gcc 4.3.3中默认设置为sse.这实际上导致我的应用程序出错.在4.0.3中,-mfpmath为387.

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

一般来说,如果我在gcc中进行版本更改之前能够知道需要检查的全面事项列表,那将会很棒.(因为这会对性能和功能产生影响.)

小智 26

gcc -Q -v(inputfile)

只有一个基本的小c或cpp文件作为输入文件.应该给你一个默认传递给gcc的所有选项的大清单,其中一个可能导致sse fp math被启用.


Tre*_*son 20

除了编译特定文件-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
...
Run Code Online (Sandbox Code Playgroud)

要包含特定于目标的汇编程序和链接程序选项列表(但目前不是其默认设置),请使用--target-help而不是--help=target.


LTh*_*ode 5

-Q --help=target除了特定于目标的选项之外,您还可以用于显示-Q -O<n> --help=optimize在给定优化级别上打开或关闭的优化器传递。-Q似乎也可以单独与其他--help=<blah>参数一起使用。


APr*_*mer 2

  1. 我这里的 gcc 4.3.3 版本没有您所抱怨的行为。我自己编译了它,所以我很确定您所看到的更改肯定还有另一个原因,而不仅仅是 gcc 版本(例如一直使用 sse AFAIR 的 64 位编译)。

  2. gcc 具有通知行为更改的发行说明。它们与 gcc 源代码分发包一起打包,并可在网络上获取。对于 gcc 4.3,请参阅http://gcc.gnu.org/gcc-4.3/changes.html