8

我已经从源代码安装了 clang 和 llvm,并且正在尝试使用新标准的功能编译一些 C++ 代码。

我发现虽然例如使用 for 范围for (i : vector)(例如)工作正常,但当我需要导入标头(例如<unordered_set><tuple>.

我是否需要使用新的 libc++ 来使用这些头文件,还是只需要进行简单的构建更改?目前,我刚刚将 clang 和 llvm 构建到我的主目录中的一个文件夹中,并从那里调用 clang++。

4

2 回答 2

11

请参阅http://clang.llvm.org/get_started.html

如果您打算使用 Clang C++ 支持,您可能需要告诉它如何找到您的 C++ 标准库头文件。如果 Clang 找不到您的系统 libstdc++ 头文件,请按照以下说明操作:

  • gcc -v -x c++ /dev/null -fsyntax-only来获取路径。

  • clang/lib/Frontend/InitHeaderSearch.cpp中查找注释“FIXME:temporary hack:hard-coded paths”并更改下面的行以包含该路径。

于 2012-04-06T18:05:35.500 回答
4

虽然标准库随编译器的分发一起提供,但当您自己构建它时,您仍然需要构建标准库本身。它的一些组件可能只是标题,但并非所有组件都是。

因此,如果不构建它,您至少需要下载该库。Clang 可以使用 GCC 的 libstdc++,但他们也有他们的 libc++ 项目。

于 2012-04-06T18:06:01.067 回答