本文介绍了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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!