g++ 4.6 没有 <bits/c++config.h> 头文件 cstring 要求的文件

Posted

技术标签:

【中文标题】g++ 4.6 没有 <bits/c++config.h> 头文件 cstring 要求的文件【英文标题】:g++ 4.6 issue no <bits/c++config.h> file as required by the header cstring 【发布时间】:2012-03-01 08:56:05 【问题描述】:

cstring 头文件所需的 c++ 包含目录中没有名为 bits/c++config.h 的文件。但是当我包含标题cstring 并使用g++ 编译时,它不会给我错误。当我尝试通过以下方式使用clang++编译器编译程序时出现问题。

$clang++ -cc1 -I/usr/include -I/usr/include/c++/4.6.1 -I/usr/lib/gcc/i686-linux-gnu/4.6.1 -I/usr/include/i386-linux-gnu -I opt_149739_build/include hello.cpp

In file included from /media/space/hello.cpp:2:
In file included from /media/space/opt_149739_build/include/clang/Driver/Driver.h:13:
In file included from /media/space/opt_149739_build/include/clang/Basic/Diagnostic.h:17:
In file included from /media/space/opt_149739_build/include/clang/Basic/DiagnosticIDs.h:18:
In file included from /media/space/opt_149739_build/include/llvm/ADT/StringRef.h:14:
/usr/include/c++/4.6.1/cstring:42:10: fatal error: 'bits/c++config.h' file not found
#include <bits/c++config.h>

我在 Ubuntu 11.04 上使用 g++ 4.6.1

出了什么问题?

【问题讨论】:

可以提供更多详细信息,例如:您使用哪个版本的 gcc?在哪个操作系统上?你的 gcc 命令行是什么? 【参考方案1】:

bits/c++config.h 文件是相对于当前编译器的平台特定包含,因此它隐藏在另一个目录中,默认情况下由 g++ 搜索,但看起来不是由 clang++ 搜索。

在我的机器上,运行 locate c++config.h 会给出以下(相关)文件:

/usr/include/c++/4.6/i686-linux-gnu/64/bits/c++config.h
/usr/include/c++/4.6/i686-linux-gnu/bits/c++config.h

第一个用于 64 位,第二个用于 32 位。

所以只需添加-I/usr/include/c++/4.6/i686-linux-gnu-I/usr/include/c++/4.6/i686-linux-gnu/64 或您的平台所需的任何内容。

【讨论】:

是的,我发现它与您所获得的目录位于同一目录中。谢谢 如果您的架构没有合适的 c++config.h,请从您的存储库安装 libstdc++-devel。 在某些情况下这可能还不够:有时你需要 -I/usr/include/c++/4.6/i686-linux-gnu/c++/4.6 我使用 -I/usr/include/i386 -linux-gnu/c++/4.7/ 用于我的机器和 4.7 版本的 gcc,一切正常【参考方案2】:

这可能与clang++如何搜索其头文件有关。

您将找到一个示例补丁,说明他们如何在 15、4 个月前为 fedora 修复它,here。

请参阅此red hat bugzilla post 了解更多信息。

【讨论】:

在安装 clang 时,我确实编辑了 Frontend/InitHeaderSearch.cpp 文件以包含解决问题所需的目录。我仍然得到这个错误。现在,我已经在我的 CMakeLists.txt 中添加了所有必需的路径来解决这个问题。

以上是关于g++ 4.6 没有 <bits/c++config.h> 头文件 cstring 要求的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Ubuntu 11.04 (Natty Narwhal) 上获得 g++/gcc 4.6?

pagefile.sys在C盘占用了4.6G空间,系统文件来的,请问可以删吗?太大了,谢谢

ArcGIS API for JavaScript 4.6 版本加载高德地

Flex 4.6 中心图像

loj10145. 「一本通 4.6 练习 2」郁闷的出纳员

如何为 Fedora 安装 g++?