Xcode 3.2.1 GCC CLANG和LLVM去神秘化

时间:2009-10-11 16:30:12

标签: iphone xcode gcc llvm clang

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

  • 静态代码分析通过Build菜单下的Build and Analyze选项或自定义构建设置完全集成在Xcode IDE中
  • GCC 4.2是10.6 SDK的默认系统编译器
  • 使用两个不同的前端包含可选的LLVM编译器 - Clang编译器是一种前沿解析器,可显着改善编译时间。为了获得最大兼容性,GCC LLVM编译器将LLVM后端与GCC 4.2解析器结合使用。
  • 新的可选Clang-LLVM 1.0编译器使用速度更快的Clang前端解析器与LLVM后端编译器相结合,实现快速编译和快速可执行代码。虽然GCC 4.2仍然是系统默认值,但许多项目都将受益于此编译器组合。 Clang-LLVM 1.0编译器在遇到C ++代码时将回退使用LLVM-GCC 4.2。

我们公司现有的项目是纯C,Objective-C和Objective-C ++,适用于台式机和iphone。有人可以在高层次上总结LLVM,GCC,CLANG,CLANG-LLVM,WordFoo等的差异。人。并解释它们是什么以及我们何时应该使用它们以及用于什么?如果有更详细的解释链接会很高兴,但我真的只是在寻找一个高级概述。

1 个答案:

答案 0 :(得分:53)

简而言之:

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

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

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

Apple希望将来用GCC取代GCC,因为他们有针对GPLv3许可代码的政策(GCC 4.2是根据GPLv2许可的最后一个版本)。