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 版本加载高德地