如何在不使用gcc作为clang的后端的情况下使用llvm作为clang后端来编译C ++文件? 我很确定clang正在使用gcc,因为
$ clang++ --version
clang version 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
它使用gnu作为目标而不是llvm。我的llvm-config
输出:
$ llvm-config --version --targets-built
6.0.1
X86
我使用标准选项为构建目标(X86)从源代码构建了clang和llvm。
编辑:我认为它正在使用gcc作为后端,因为this code在在线ide中会产生错误,但可以在装有clang ++和g ++的计算机上使用。代码依赖于事实,即gcc实施了基于策略的数据结构,这不是标准的一部分。
答案 0 :(得分:1)
问题在于数据的解释。 lang所指的目标与要为其生成代码的平台有关。
如果使用BSD或Windows作为操作系统,或者处理器是ARM,Intel 32位,Spark ......
您唯一需要担心的目标是交叉编译时。换句话说,如果运行编译器的计算机对可执行结构的要求不同于运行编译器的计算机。
PS:Clang始终将LLVM用于其IR。忽略不推荐使用的Clang + C2,它始终使用LLVM优化器和代码生成器。