来自 EPEL 的 Amazon Linux 上的 Clang 找不到C++标头或库

Clang on Amazon Linux from EPEL can't find C++ headers or libraries

本文关键字:C++ 找不到 Clang EPEL Amazon Linux 上的 来自      更新时间:2023-10-16

我试图编译一个简单的hello world测试程序,只是为了让事情在我们的CI基础设施构建盒上工作,它拒绝在使用clang的CentOS上编译(但在同一平台上与GCC一起工作很好)。为了完整起见,下面是一个很简单的程序:

#include <iostream>
int main(){
    std::cout << "wow" << std::endl;
    return 0;
}

运行clang++ test.cpp产量:

test.cpp:1:10:致命错误:'iostream'文件未找到

我用一个简单的sudo yum install clang安装了它,可以看到,当GCC在Amazon Linux上安装时,它附带了自己的libstdc++头文件,这些文件位于/usr/include/c++/GCC -version中,但是必须指定include来编译这样的东西似乎很奇怪。

Clang应该使用自己的(可能是libc++),并且默认情况下知道头文件和库文件在系统中的位置(至少对于iostream之类的东西)。

编译和运行程序在GCC中工作得很好。看起来clang的EPEL包可能没有正确配置,是这样吗?

正如Dave提到的,他已经创建了新的RPM包,现在正在进行EPEL测试。你现在可以在Amazon Linux上安装它们,像这样:

yum --enablerepo=epel-testing --nogpgcheck install clang

一旦这些包经过进一步的测试,它们将在EPEL中正常运行(稳定),并且可以使用clang install安装。

这是由于没有定义"三元组"来支持Amazon Linux造成的。

参见EL6上的EPEL原始补丁和应用。