默认启用 gcc 4.3.3 编译器选项

问题描述 投票:0回答:4

我已从 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 中进行版本更改之前需要检查的完整列表,那就太好了。(因为这会影响性能和功能。)

c++ gcc optimization
4个回答
29
投票
gcc -Q -v

仅使用一个基本的小型 c 或 cpp 文件作为输入文件。应该给你一个默认传递给 gcc 的所有选项的大列表,其中一个可能会导致 sse fp math 被启用。


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 版本(例如一直使用 sse AFAIR 的 64 位编译)。

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

© www.soinside.com 2019 - 2024. All rights reserved.