Clang:找不到 C++11 头文件

Posted

技术标签:

【中文标题】Clang:找不到 C++11 头文件【英文标题】:Clang : Failed to find C++11 headers 【发布时间】:2014-09-26 02:31:07 【问题描述】:

我正在尝试使用 clang 3.6 构建 Crow 库中的所有示例,我可以看到使用 clang 3.6 已正确找到 CC/CXX。它使用我不太熟悉的 cmake。

但是它未能找到 C++11 头文件。

错误是这样的:

未找到“未来”文件

似乎是libstdc++没有正确指定,或者有人认为需要自己构建clang libstdc++。

任何人都可以对此有所了解。

【问题讨论】:

确保在 Clang 中使用 C++ 11 功能:***.com/questions/10408849/… Clang 应该已经提供与 libstdc++ 的 ABI 兼容性,因此您不需要为 clang 构建特殊版本。您可能需要链接到特定的 abi 支持库(libsupc++ 与 libc++abi),或者您可能需要将 libstdc++ 更新到支持 C++11 的版本,或者使用带有 -stdlib=libc++ 的 libc++。 @CiprianKhlud,实际上我确实在 cmake 中打开了它: set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -Wall -std=c++11 -stdlib=libstdc++") 【参考方案1】:

所以根据之前的评论,问题是您没有在 Clang 中启用 C++ 11 模式。

就像在referenced question 中一样,问题只是您没有告诉 Clang(或将来为 GCC)寻找 C++ 头文件。

“Clang 的命令行是 gcc 兼容的,所以你必须通过 followinf 命令行开关启用 C++11 支持”

-std=c++11

如果在此之后您所要做的就是编写您的 C++ 11 代码。如果你使用 Makefiles,你应该在你的 CXX 参数中添加命令行切换到 Clang。

【讨论】:

我实际上确实将其打开如下: set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -Wall -std=c++11 -stdlib=libstdc++") 我担心的是 clang 尝试使用系统默认值c++ 头文件/库不是我安装的 gcc 4.8。有人说我需要用 --with-gcc-toolchain 重建 clang 来告诉在哪里可以找到我的 gcc 4.8。但我试图避免重建铿锵声。 您是否尝试单独编译该文件?并使用clang++(或g++,如果你愿意)只是为了看看它是否找到这个头? (我希望找到它) 以这种方式构建时找不到 unordered_map 文件:/usr/local/bin/clang++ -Wall -std=c++11 -stdlib=libstdc++ excample.cpp 所以按照谷歌搜索的一些说明,我尝试构建 Clang 的 libc++abi 和 libc++ 项目,但最终出现错误:cc : error: unrecognized command line option '-stdlib=libc++ '

以上是关于Clang:找不到 C++11 头文件的主要内容,如果未能解决你的问题,请参考以下文章

[VScode]关于找不到头文件的解决

c 的 SWIG python 绑定找不到标准头文件的 _EXFUN

请问C程序中,出现了cons.h头文件,是啥,找不到这个头文件,谢谢

找不到 Swift 到 Objective C 头文件

更新到 vs2017 15.2 后找不到 C 头文件

VScode找不到C++万能头文件<bits/stdc++.h>解决办法