我已经从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中进行版本更改之前能够知道需要检查的全面列表,那将会很棒。(因为这会对性能和功能产生影响。)
答案 0 :(得分:25)
gcc -Q -v(inputfile)
只有一个基本的小c或cpp文件作为输入文件。应该给你一个默认传递给gcc的所有选项的大清单,其中一个可能导致启用sse fp math。
答案 1 :(得分: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
...
要包含特定于目标的汇编程序和链接程序选项列表(但目前不是其默认设置),请使用--target-help
代替--help=target
。
答案 2 :(得分:2)
我在这里的gcc 4.3.3版本没有你抱怨的行为。我自己编译了所以我很确定你所看到的改变必须有另一个原因而不仅仅是gcc版本(比如编译64位一直使用sse AFAIR)。
gcc有发布说明,通知行为更改。它们与gcc源代码分发一起打包,可在网上获得。对于gcc 4.3,请参阅http://gcc.gnu.org/gcc-4.3/changes.html。
答案 3 :(得分:1)
除了针对特定目标选项的-Q --help=target
之外,您还可以使用-Q -O<n> --help=optimize
显示在给定优化级别上打开或关闭的优化程序通道。 -Q
似乎也可以与其他--help=<blah>
参数一起使用。