我是一名 iOS 开发人员,我不知道编译器是如何工作的,我想问一下 LLVM GCC 4.2(Xcode 4 默认编译器)和 GCC 4.2 编译器(Xcode 3 默认编译器)之间有什么区别。
这是我的理解
GCC 4.2 是(大部分)标准的开源 GNU C 编译器,适用于 C、C++ 和 Objective-C。 它几乎是所有开源中使用的标准编译器,并且经过了可靠的测试。 但因为它的技术很旧,它只是一个编译器,所以它没有其他用途的钩子。 而且它非常通用,与 CPU 和平台无关。
LLVM 是下一代编译软件。 它具有语法和语义感知能力,可编译为字节代码,然后编译为本机代码,并且它提供了挂钩,以便 IDE 和其他工具可以使用其知识。 正是这种意识使得 Apple 能够改进自动完成、实施修复以及在 Xcode 4 中进行构建和分析。LLVM 是 Apple 的未来,也是 GCC 的未来。 据称,LLVM 还生成更严格的代码,因为它的优化更智能(对此不确定)。 LLVM 在某些时候还允许更动态的语言绑定。
LLVM GCC 是中途标志,用旧的 GCC 后端编译器对 LLVM 进行语法和语义预处理。
我使用它们的方式
我在开发过程中使用 LLVM,因为它可以让我警惕任何和所有问题。 当我第一次在遗留代码上运行它并发现一些问题时确实很有帮助。
我使用 GCC 为 iOS 3.1.3 应用程序生成最终可执行文件,并使用 LLVM 为所有 iOS 4.0 / Mac 10.6 应用程序生成最终可执行文件。