2012-04-06 120 views
8

我已经从源码安装了clang和llvm,并且正在尝试使用新标准的特性来编译一些C++代码。包括铿锵声/ LLVM的C++ 11头文件

我发现虽然例如使用范围例如for (i : vector)工作正常,当我需要导入一个头时,我遇到了麻烦(无法找到头文件) <unordered_set><tuple>

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

回答

4

虽然标准库自带的编译器的分布,当你自己构建它,你仍然需要建立标准库本身。它的一些组件可能只是标题,但并非全部都是。

所以你至少需要下载库,如果没有构建它。 Clang可以使用GCC的libstdC++,但他们也有他们的libC++项目。

11

参见http://clang.llvm.org/get_started.html

如果您打算使用Clang C++支持,您可能需要告诉它如何找到您的C++标准库标头。如果锵无法找到你的系统的libstdC++头文件,请按照下列指示:

  • -v的gcc -x C++的/ dev/null的-fsyntax只得到的路径。

  • 查找注释“FIXME:临时黑客:硬编码路径”铛/ lib目录/前端/ InitHeaderSearch.cpp并更改以下行包括路径。

+0

好的,但它似乎只是来自新标准头的问题。 – zenna 2012-04-07 00:43:58

+0

啊哈,这可能是因为我的g ++ 4.6在非标准的地方 – zenna 2012-04-07 00:45:42