代码之家  ›  专栏  ›  技术社区  ›  Tyler Brock

来自EPEL的AmazonLinux上的Clang找不到C++头或库

  •  3
  • Tyler Brock  · 技术社区  · 12 年前

    我正在尝试编译一个简单的hello world测试程序,只是为了让我们的CI基础架构构建盒能够正常工作,但它拒绝在CentOS上通过clang进行编译(但在同一平台上与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安装在AmazonLinux上时,它自带libstdc++头文件,这些头文件位于/usr/include/c++/GCC版本中,但必须指定include才能编译这样的文件似乎很奇怪。

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

    编译和运行程序在这里与GCC配合得很好。似乎clang的EPEL包可能没有正确配置,是这样吗?如有任何帮助,将不胜感激。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Tyler Brock    12 年前

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

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

    一旦进一步测试了软件包,它们将处于EPEL状态(稳定),并可使用clang install进行安装。

        2
  •  0
  •   Dave Johansen    12 年前

    这是由于没有定义“三元组”来支持AmazonLinux造成的。看见 original patch 和 application for EPEL on EL6 .