LLVM vs clang on OS X(LLVM与OS X上的clang)
问题描述
我有一个关于OS X上的llvm、clang和GCC的问题。
LLVM4.2、LLVM2.0和LLANG有什么不同?我知道它们都是基于llvm构建的,但它们有什么不同呢?
除了编译速度快,LVM比GCC还有什么优势?
LLVM
推荐答案最初代表"低级虚拟机",但现在它只是代表自己,因为它已经成长为不同于传统虚拟机的东西。它是一组库和工具,以及标准化的中间表示,可用于帮助构建编译器和即时编译器。除了它自己的中间表示之外,它不能编译任何东西;它需要一个特定于语言的前端才能做到这一点。如果人们只是指LLVM,他们可能只指低级的库和工具。有些人可能会将clang或llvm-GCC错误地称为llvm,这可能会引起一些念力。
llvm-GCC是GCC的改进版,它使用llvm作为后端,而不是GCC自己的后端。现在它被弃用了,取而代之的是龙蛋,它使用GCC的新插件系统来做同样的事情,而不需要分叉GCC。 Clang是一个全新的C/C++/Objective-C编译器,它使用自己的前端,LLVM作为后端。它提供的优势是更好的错误消息,更快的编译时间,以及其他工具更容易挂接到编译过程中的方式(如LLDB debugger和Clang static analyzer)。它还具有合理的模块化,因此可以用作其他需要分析C、C++或Objective-C代码的软件的库。这三种方法(平凡的GCC法、GCC+LLVM法、传统的LLVM法)各有利弊。我看到的最后几组基准测试显示,GCC在大多数测试用例中生成的代码略快一些(尽管LLVM在一些测试用例中略有优势),而LLVM和Clang的编译时间要好得多。GCC和GCC/llvm组合的优势在于,更多的代码已经过测试,并且可以在GCC风格的C上工作;有些编译器特定的扩展只有GCC拥有,有些地方的标准允许不同的实现,但是代码依赖于一个特定的实现。如果您获得了大量的遗留C代码,那么它在GCC中运行的可能性要比在Clang中运行的可能性大得多,尽管这会随着时间的推移而改进。
这篇关于LLVM与OS X上的clang的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:LLVM与OS X上的clang
基础教程推荐
- 设计字符串本地化的最佳方法 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- C++,'if' 表达式中的变量声明 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01