Clang和LLVMC之间有什么区别?

4

llvmc.execlang.exe 有什么区别?编译 C 或 C++ 代码应该使用哪个?

3个回答

12

llvmc是LLVM工具链中各种程序的前端,特别是llvm-*系列程序。也就是说,默认情况下,它会尝试使用llvm-gccllvm-g++编译C和C++文件。

如果您想使用clang,可以向llvmc传递-clang参数,并且可能可以配置llvmc以便默认使用clang,但我不知道如何实现。

建议直接使用clangclang++,它们可以作为gccg++的替代品。


8

llvmc 是一个实验性的驱动程序,旨在支持多种不同的源语言。Clang 和 Clang++ 一直是驱动 (C / C++ / Objective-C) 编译器的首选方式。事实上,llvmc 已经从主线中删除。

简而言之,您应该绝对使用 "clang" 而不是 "llvmc"。


3
LLVM最初是指“低级虚拟机”,今天主要用于以下两种情况:
- 作为后端优化器/编译器 - 作为JIT编译器
而Clang是处理C语言系列的库集合,其中有一个编译器(clang),它充当C、C++、Objective-C和Objective-C++的前端,可以在LLVM库的基础上使用。
因此,在您的情况下,您将想要使用clang和clang++分别编译C和C++,不必担心LLVM在幕后用于优化您的代码并处理适合您的架构的机器指令的生成。

4
我认为Mehrdad特别询问的是llvmc命令,它并不同于LLVM本身。 - Piotr Praszmo
@Banthar:我注意到了,是的,你可以使用llvmc命令调用Clang,但那只是一个变通方法。llvmc最好用于llvm相关的东西(比如执行优化等),将其用作clang的替代并没有太大必要,只会增加一些开销(无论是执行时间还是开发人员心理负担)。 - Matthieu M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接