如何编译C程序而不进行任何优化

时间:2011-11-28 17:16:49

标签: c gcc

如何在不使用gcc / g ++进行任何优化的情况下编译C程序?

5 个答案:

答案 0 :(得分:18)

使用-O0是我所知道的最接近的,但是,与其他回复不同,这并不意味着零优化。您可以计算不同gcc优化级别的启用优化次数,如下所示(这是gcc 4.8.2):

$ gcc -Q -O0 --help=optimizers | grep enabled | wc -l
52
$ gcc -Q -O1 --help=optimizers | grep enabled | wc -l
80
$ gcc -Q -O2 --help=optimizers | grep enabled | wc -l
110
$ gcc -Q -O3 --help=optimizers | grep enabled | wc -l
119

所以在-O0,启用了52个优化。我想一个人可以逐个禁用它们,但我从来没有见过它。

请注意,gcc手册页说:

-O0 Reduce compilation time and make debugging produce the expected results.  This is the default.

它不承诺零优化。

我不是gcc开发人员,但我猜他们会说-O0优化已经变得非常标准,以至于它们几乎不再被称为优化,而是#34;标准"。如果这是真的,那有点令人困惑,因为gcc仍然在优化器列表中有它们。我也不太了解历史:或许对于先前的版本-O0确实意味着零优化......

答案 1 :(得分:15)

gcc main.c

g++ main.cpp

默认情况下,它不会进行任何优化。只有在您指定-O1, -O2, -O3, etc...时才会进行优化。

或者您可以使用-O0开关将其设为明确。

答案 2 :(得分:6)

除非您通过-O标志提出要求,否则不应进行任何优化。如果您需要撤消构建系统提供的某些默认值,-O0将为您执行此操作,只要它是命令行中的最后一个-O标志。

答案 3 :(得分:1)

使用gcc,传入标志:-O 0。

答案 4 :(得分:1)

使用编译器开关 -O0