Xcode 3.2.1 GCC CLANG和LLVM揭秘

本周新Xcode 3.2.1自带的自述文件说明如下:

  • 静态代码分析通过Build菜单下的Build and Analyze选项或通过自定义构build设置完全集成在Xcode IDE中
  • GCC 4.2是10.6 SDK的默认系统编译器
  • 包括使用两个不同前端的可选LLVM编译器 – Clang编译器是一个先进的parsing器,可显着提高编译时间。 为了获得最大的兼容性,GCC LLVM编译器利用LLVM后端和GCC 4.2分析器。
  • 新的可选Clang-LLVM 1.0编译器使用快速Clang前端parsing器和LLVM后端编译器,以实现快速编译和快速可执行代码。 尽pipeGCC 4.2仍然是系统默认的,但许多项目都将受益于这种编译器组合。 当Clang-LLVM 1.0编译器遇到C ++代码时,将回退到使用LLVM-GCC 4.2。

我们公司现有的项目是纯C,Objective-C和用于桌面和iPhone的Objective-C ++。 有人可以总结LLVM,GCC,CLANG,CLANG-LLVM,WordFoo等的差异。 人。 并解释他们是什么,什么时候我们应该使用每个和什么? 这将是很好的链接到更详细的解释,但我真的只是在寻找一个高层次的概述。

简而言之:

编译器基本上分为两部分。 一个是前端,包含编程语言的parsing器和语义分析。 前端产生一些代码的中间表示。 然后是后端,它把前端生成的东西,优化它,最终生成汇编代码。

  • GCC :众所周知的编译器,包含各种语言的前端和许多处理器体系结构的后端
  • LLVM :各种体系结构(和其他低级别的东西)的一组后端,
  • clang :C,Objective-C和C ++的新前端; 使用LLVM后端。 您将从编译器中获得更多可读的错误和警告,并缩短编译时间。 您也可能遇到不兼容或错误; 铿锵是一个非常年轻的项目。
  • LLVM-GCC:GCC的前端,LLVM的后端。 LLVM的后端比GCC快。

clang的(Objective-)C ++支持还远远没有完成,因此在遇到C ++源文件时,会调用llvm-gcc。 它还包含现在集成到Xcode中的静态分析器。 有些人认为LLVM的后端生成比GCC更好的代码,但你的里程可能会有所不同。 LLVM还支持链接时优化(您可以在Xcode的项目设置中启用)。 他们可能产生更快的代码。

苹果公司希望将来可以用叮当声replaceGCC,因为他们有针对GPLv3授权代码的政策(GCC 4.2是GPLv2授权的最后一个版本)。