OSX上的LLVM与clang?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (67)

我在OSX上有一个关于llvm、clang和gcc的问题。

lvm-gcc 4.2、lvm 2.0和clang之间有什么区别?

提问于
用户回答回答于

LLVM最初是“低级虚拟机”的意思,但现在它只是代表自己,因为它已经发展成了传统虚拟机以外的东西。它是一组库和工具,以及标准化的中间表示,可以用来帮助构建编译器和实时编译器。除了自己的中间表示之外,它不能自己编译任何东西;为此,它需要一个特定于语言的前端。如果人们只是引用LLVM,他们可能只是指低级库和工具。有些人可能会错误地将Clang或llvm-gcc称为“llvm”,这可能会造成一些混淆。

llvm-gcc是GCC的一个修改版本,它使用LLVM作为后端,而不是自己的。现在,它不再受欢迎,它支持DragonEgg,它使用GCC的新插件系统来完成同样的事情,而不需要分叉GCC。

用户回答回答于

这里有两件不同的事情。

LLVM是一个后端编译器,意图在其上构建编译器。它处理适应目标体系结构的代码的优化和生成。

CLang是分析C,C ++和Objective C代码的前端,并将其转换为适用于LLVM的表示形式。

llvm gcc是基于gcc 4.2的基于llvm的C ++编译器的初始版本,因为CLang可以解析它可以解析的所有内容,所以现在不推荐使用它。

最后,CLang和gcc之间的主要区别并不在于生成的代码,而在于方法。尽管gcc是单片的,但CLang已经被构建为一套库。这种模块化设计为例如IDE或完成工具提供了很好的重用机会。

目前,gcc 4.6生成的代码通常要快一些,但是CLang正在缩小差距。

扫码关注云+社区