为同一应用程序编译不同gcc优化级别的文件可以吗?

为同一应用程序编译不同gcc优化级别的文件可以吗?,c,gcc,compiler-optimization,C,Gcc,Compiler Optimization,我有一个应用程序,它通常使用gcc优化标志-O0(无优化)。现在我有一个opt.c文件,我想用-O1编译它,剩下的文件用-O0 更具体地说,opt.c有一个大的for循环,它执行一些简单的算法 最后只创建一个可执行文件,其中包含所有文件和opt.c。我不确定这是否会导致任何问题 是的,那太好了。我很好奇为什么你不想优化你所有的代码?我们通常会对所有内容进行优化,但优化会导致问题的少数文件除外。由于它是一个大型应用程序,可能会引入错误(?),并且需要额外的测试。为了避免这种情况,它应用于一个文件。

我有一个应用程序,它通常使用gcc优化标志-O0(无优化)。现在我有一个opt.c文件,我想用-O1编译它,剩下的文件用-O0

更具体地说,opt.c有一个大的for循环,它执行一些简单的算法


最后只创建一个可执行文件,其中包含所有文件和opt.c。我不确定这是否会导致任何问题

是的,那太好了。我很好奇为什么你不想优化你所有的代码?我们通常会对所有内容进行优化,但优化会导致问题的少数文件除外。

由于它是一个大型应用程序,可能会引入错误(?),并且需要额外的测试。为了避免这种情况,它应用于一个文件。@kp11优化只有在代码中存在错误,或者编译器或工具链中不太可能存在错误时才会导致问题。强烈建议您最大限度地优化所有代码,并解决由此产生的任何问题。也就是说,我同意这个答案。@HadiBrais:在某些情况下,优化也会对用C语言编写的代码造成严重破坏,这些代码提供了标准规定之外的有用行为和保证;在某些情况下,禁用钝编译器的“优化”的运行时成本可能低于防范它所需的代码成本。GCC建议使用-Og over-O0进行调试。那么您可能不需要不同的标志。但是-O2或-O3对于opt.c可能会有很大帮助,除非它编译得太慢。