强制 Clang 在 Linux 中使用 llvm 而不是 GCC
force clang to use llvm instead of gcc in linux
如何在不使用 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 作为后端,因为此代码在在线 ide 中产生错误,但在我的机器上使用 clang++ 和 g++ 工作。代码依赖于这样一个事实,即 gcc 实现了基于策略的数据结构,这些数据结构不是标准的一部分。
问题在于数据的解释。clang 引用的目标与您为其生成代码的平台有关。
- x86_64 这是与英特尔兼容的 64 位处理器/和
- 未知我不确定这个,尽管我相信它指定了有关处理器的更多详细信息,但不可用
- linux 您正在使用 Linux 内核/操作系统
- gnu 对象结构应该遵循 gnu 标准,我相信这直接映射到 ELF 上
如果您使用 BSD 或 Windows 作为操作系统,或者当您的处理器是 ARM、英特尔 32 位、Spark 时,这将有所不同......
唯一应该担心目标的时刻是交叉编译时。换句话说,如果运行编译器的计算机对可执行结构有其他要求,而不是运行编译器的计算机。
忽略已弃用的Clang+C2,它始终使用LLVM优化器和代码生成器。
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- 强制 Clang 在 Linux 中使用 llvm 而不是 GCC
- GCC 和 LLVM 中的正则表达式速度相差 1000 倍
- GCC,Apple LLVM和MSVC编译器的不同部分的名称是什么?
- 依赖GCC/LLVM的"-fexceptions"在技术上是未定义的行为吗?
- 将 GCC IR 转换为 LLVM IR
- LLVM 5.0编译器是否等同于GCC编译器
- 从OSX平台转换并使用gcc和llvm时生成失败
- 使用 llvm-gcc 4.x 安装 srilm 1.6.0 时出现问题
- c ++ 11 参数包在 Apple LLVM 7.0.0 中存在错误行为,但适用于 GCC-5.1
- 为什么 gcc 和 llvm 之间的行为不同
- 我可以使用LLVM来加速构建并减少GCC编译时间吗?
- c++模板在GCC中工作正常,但在LLVM-GCC编译器中显示编译时错误
- LLVM的GCC工具链
- 在我的项目中使用预编译的头(clang/llvm,但也使用gcc).如何在make中部署-include选项
- OS X 选择 llvm gcc 编译器
- c++标准库在.mm文件中找到,但在.h文件中找不到(Xcode 4.5 LLVM GCC 4.2)
- 使用自制,gcc和llvm与c++ 11