{c} include目录中没有名为bits/c++config.h
的文件,cstring
头文件需要该文件。但是当我包含标题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
出了什么问题?
答案 0 :(得分:29)
文件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
或您平台所需的任何内容。
答案 1 :(得分:0)