如何在不使用gcc/g ++进行任何优化的情况下编译C程序?如何在不进行任何优化的情况下编译C程序
10
A
回答
13
gcc main.c
或
g++ main.cpp
默认情况下它不会做任何优化。只有当您指定-O1, -O2, -O3, etc...
时,它才会进行优化。
或者您可以使用-O0
开关使其明确。
5
除非您通过-O
标志询问他们,否则不应该进行任何优化。如果您需要撤消构建系统提供的某些默认设置,则-O0
会为您执行此操作,只要它是命令行中的最后一个-O
标志即可。
1
使用GCC,通过在标志:-O 0
1
使用编译器开关-O0。
11
使用-O0是我所知道的最接近的,但是,与其他答复不同,这并不意味着零优化。你可以指望(这是gcc 4.8.2)的不同gcc的优化级别这样使优化的数量:
$ 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优化已经变得如此标准以致于他们几乎不能称为优化,而是“标准”。如果这是真的,这有点令人困惑,因为gcc仍然将它们放在优化器列表中。我也不太了解历史记录:或许对于以前的版本-O0确实意味着零优化...
相关问题
- 1. 如何编译C程序以在没有命令框的情况下运行?
- 2. 如何在启用溢出检查的情况下编译并运行优化的Rust程序
- 3. 如何在没有System.Web dll的情况下进行UrlDecode编程#
- 4. 如何在没有visual studio的情况下编译C文件
- 5. 如何在不序列化的情况下执行ActivityBuilder?
- 6. C#:如何在不停止程序执行的情况下执行线程
- 7. 在不编译DLL的情况下部署asp.net应用程序
- 8. 在多线程的情况下,某些编译器优化是否无效?
- 9. 如何优化php进程的内存使用情况?
- 10. 如何在不编译宏的情况下启动excel?
- 11. 如何在不崩溃编译器的情况下实现MutableCollectionType?
- 12. 如何在不重新编译FLA的情况下更新SWF
- 13. 如何在不调试的情况下编译PHP扩展?
- 14. 许多情况下的开关优化保证了任何情况下的相同访问时间? (C++)
- 15. Nginx如何在不丢失任何请求的情况下进行升级?
- 16. 如何在不重新编译的情况下本地化WPF? (dynamic loaded XAML)
- 17. 如何在不编译它的情况下在不同的体系结构上编译相同的C代码?
- 18. 如何在没有任何动态库的情况下编译swift?
- 19. 如何在不锁定表的情况下优化存储过程?
- 20. 如何在不影响每一行的情况下进行foreach?
- 21. Gurobi优化器:在不优化模型的情况下确定可行性
- 22. 如何在不编译的情况下运行一组相关的groovy脚本?
- 23. 如何在黑莓的情况下优化http连接?
- 24. 如何在不进行部署的情况下更新翻译yaml文件?
- 25. 如何在不对任何数字进行硬编码的情况下自动执行爬网?
- 26. 如何在不安装IDE的情况下编译并运行此Delphi代码?
- 27. 如何在不初始化的情况下在while循环中进行反射
- 28. 如何在不使用Xcode的情况下编译使用框架的C程序
- 29. 如何在没有反射的情况下进行Java序列化?
- 30. 如何在不对我的索引进行排序的情况下执行groupy.apply()?
关于你不想寻找编译器开关的机会,你可能希望声明你的变量(s)'volatile'。 – user786653
你为什么要关闭它们?你有理由相信优化1)启用,2)导致你的问题?正确编写代码导致问题的优化很少见。但是,将-O0与-ggdb结合使用以进行调试通常很有用。 –