为啥调试和发布的默认编译器不同?

Posted

技术标签:

【中文标题】为啥调试和发布的默认编译器不同?【英文标题】:Why are default compilers different for debug and release?为什么调试和发布的默认编译器不同? 【发布时间】:2012-12-11 20:07:03 【问题描述】:

我使用的是 Xcode 4.5.2。我在构建设置中看到调试编译器说“默认编译器(Apple LLVM 编译器 4.1)”,而发布它是“LLVM GCC 4.2”。为什么要用 4.1 来调试,4.2 来发布?

我不认为我自己改变了它,但我想我可能在一段时间前改变了它并且不记得了。如果我确实更改了它,有人知道哪个更适合发布吗?

【问题讨论】:

您可以通过选择构建设置的“级别”视图来仔细检查默认设置。这将向您显示默认值,以及您可能在哪个级别(项目与目标)覆盖它。 【参考方案1】:

LLVM-GCC 4.2 不是 LLVM 4.2。它是带有 LLVM 后端的 GCC 4.2 前端。它是 Clang 开发时使用的中间编译器。而且我不相信这是默认设置;我想你只是在你的项目中设置了那个。 Xcode 4.5.2 中的默认值似乎是 LLVM 4.1,没有区分 Debug 和 Release。

另请注意,LLVM-GCC 将在不久的将来完全消失(可能是 Xcode 的下一个主要版本)。

【讨论】:

以上是关于为啥调试和发布的默认编译器不同?的主要内容,如果未能解决你的问题,请参考以下文章

为啥没有返回语句时没有编译器错误?

嵌入式系统开发为啥要采用交叉编译的方式

Qt 创造者。为啥我在编译发布版本时收到有关 glut 的错误,但没有调试?

为啥 C++ 构造函数在继承中需要默认参数?

默认构造函数,为啥我的类似乎有三个?当编译器将类视为结构时?

为啥默认禁用 TypeScript 中的不安全/非严格编译器规则?