【问题标题】:Xcode 3.2.1 GCC CLANG and LLVM demystificationXcode 3.2.1 GCC CLANG 和 LLVM 揭秘
【发布时间】:2010-12-05 18:50:13
【问题描述】:

本周新 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。

我们公司现有的项目是用于桌面和 iphone 的纯 C、Objective-C 和 Objective-C++。有人可以概括一下 LLVM、GCC、CLANG、CLANG-LLVM、WordFoo 等之间的区别吗?人。并解释它们是什么以及我们应该何时使用它们以及用于什么目的?有更详细解释的链接会很好,但我真的只是在寻找高级概述。

【问题讨论】:

    标签: iphone xcode gcc llvm clang


    【解决方案1】:

    简而言之:

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

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

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

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

    【讨论】:

    • 是的,clang 甚至显示错误的列,而不仅仅是行。
    • 真棒回答:当我在 Xcode 中 编码 并收到 yellow 警告时,那是叮当声吗?如果我收到 red 错误,那是什么?如果我在运行后出现错误,即在 runtime 期间,是那个 LLVM 给了我错误吗?
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2011-06-19
    • 2014-03-11
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多