我正在尝试编译一个简单的 hello world 测试程序,只是为了让事情在我们的 CI 基础设施构建盒上运行,它拒绝在 CentOS 上使用 clang 进行编译(但在同一平台上与 GCC 一起工作正常)。为了完整起见,这里是一个明显微不足道的程序:
#include <iostream>
int main(){
std::cout << "wow" << std::endl;
return 0;
}
运行 clang++ test.cpp
产生:
test.cpp:1:10: fatal error: 'iostream' file not found
我用一个简单的 sudo yum install clang
安装了它,可以看到当 GCC 安装在 Amazon Linux 上时,它带有自己的 libstdc++ header ,位于/usr/include/c++/gcc-版本,但必须指定包含来编译这样的东西似乎很奇怪。
Clang 应该使用它自己的(可能是 libc++)来代替,并且默认情况下知道 header 和库在系统上的位置(至少对于 iostream 之类的东西)。
在这里使用 GCC 编译和运行程序工作得很好。似乎 clang 的 EPEL 包可能没有正确配置,是这样吗?任何帮助将不胜感激。
最佳答案
正如 Dave 提到的,他创建了新的 RPM 包,这些包现在正在 EPEL 测试中。您现在可以像这样在 Amazon Linux 上安装它们:
yum --enablerepo=epel-testing --nogpgcheck install clang
一旦软件包经过进一步测试,它们将在 EPEL 中正常(稳定)并且可以使用 clang install 安装。
关于c++ - 来自 EPEL 的 Amazon Linux 上的 Clang 无法找到 C++ header 或库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22592128/