用-g和-O0编译的程序有什么区别

时间:2020-08-19 03:40:16

标签: gcc optimization

前几天我在想,这一点浮现在脑海。我听说-g关闭了调试优化,但是-O0确实关闭了所有优化,对吗?我只是在想。

1 个答案:

答案 0 :(得分:1)

我听说-g关闭了调试优化

那不是事实。 -g仅告诉编译器在目标文件中包含调试信息;它对实际生成的代码没有影响,并且可以与您喜欢的任何优化选项结合使用。与-O0-Og一起使用时,有用会更多,因为更高的优化级别可以以难以使用调试器的方式更改代码,但这不是

但是-O0会关闭所有优化,对吧?

是的,这是正确的;至少,可以完全关闭的所有优化。 (正如JcWasmx86指出的那样,即使在-O0上也可以进行一些“优化”,但是您可以期望它们是不需要大量编译时间或显着改变生成代码结构的转换。)

相关问题