iphone - Xcode 3.2.1 GCC CLANG 和 LLVM 揭秘

标签 iphone xcode gcc llvm clang

本周新 Xcode 3.2.1 中包含的自述文件内容如下:

  • 静态代码分析通过“构建”菜单下的“构建和分析”选项或通过自定义build设置完全集成在 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 等之间的差异吗?等人。并解释它们是什么以及我们何时应该使用它们以及用途是什么?最好有更详细解释的链接,但我实际上只是在寻找高级概述。

最佳答案

简而言之:

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

  • 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 希望将来用 clang 取代 GCC,因为他们有针对 GPLv3 许可代码的政策(GCC 4.2 是根据 GPLv2 许可的最后一个版本)。

关于iphone - Xcode 3.2.1 GCC CLANG 和 LLVM 揭秘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1551099/

相关文章:

iphone - xcode 3.2.4(sdk 4.1)无法安装到设备

objective-c - 在我的 Swift 应用程序中使用来 self 的 XPC 服务的 Objective-C 协议(protocol)

python - 段错误 - Python -> C

c - 使用switch语句是否可以得到 'and'操作

iphone - 如何为 iPhone 分发证书创建私钥?

iphone - 获取 UIView 类型

ios - 无法在 iOS 8.1.3 上关闭 MPMediaPickerController

c - 为什么我不能使用内存地址设置断点

c# - 从 asp.net C# 向 Iphone 发送推送通知

iphone - 向表格 View 中的每个单元格添加不同的图标