2009-10-11 73 views
38

本周包括新的Xcode 3.2.1自述说以下内容:的Xcode 3.2.1 GCC CLANG和LLVM神秘化

  • 静态代码分析完全Xcode的IDE中通过构建集成和分析选项在生成菜单或通过自定义生成设置
  • GCC 4.2是缺省的系统编译器10.6 SDK
  • 可选的LLVM编译器使用两种不同的前包括结束 - 铛编译器是一个领先的分析器,它提供了显着改进了编译时间。为了获得最大的兼容性,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等的差异。人。并解释他们是什么,什么时候我们应该使用每一个和什么?能够有更详细的解释链接会很好,但我只是在寻找一个高层次的概述。

回答

53

简而言之:

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

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

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

苹果希望在未来取代GCC,因为他们有针对GPLv3许可代码的政策(GCC 4.2是GPLv2许可的最后一个版本)。

+0

是的,铛甚至显示错误的列,不仅是行。 – 2010-12-20 15:20:57

+0

真棒回答:当我在Xcode *中编码并且出现*黄色*警告时,那个叮当声?如果我得到*红色*错误是什么?如果我在运行后发现错误,例如在* runtime *中,是那个给我错误的LLVM? – Honey 2016-04-13 21:33:57