G++ 4.6 问题没有标头 cstring 所需的 <bits/c++config.h> 文件
g++ 4.6 issue no <bits/c++config.h> file as required by the header cstring
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
出了什么问题?
文件bits/c++config.h
是相对于当前编译器的特定于平台的include,因此它隐藏在另一个目录中,默认情况下由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
或您的平台所需的任何内容。
在交叉编译时遇到了同样的问题,在安装libstdc++-10 dev for arm后,问题得到了解决。如果您不是交叉编译,那么就可以尝试安装最新的libstdc++pkg。
sudo apt-get update
sudo apt-get install libstdc++-10
然后,您可能会遇到标头错误:找不到"asm/errno.h"文件。只需为此安装gcc multilib。
sudo apt install gcc-multilib
这可能与clang++如何搜索其头文件有关。
你可以在这里找到一个15、4个月前他们如何为软帽修复的示例补丁。
请参阅这篇红帽子bugzilla帖子了解更多信息。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- 如何显式调用运算符<<
- bits/stdc++.h 包含哪些头文件?
- Arduino Uno - serial.read to a struct of bits
- 为什么这两个代码给出不同的输出?// bits.c float_i2f
- 当索引为 1 时,_BitScanReverse返回 0,这意味着根据 MS "no set bits were found"
- 模板操作员&lt;未打电话
- C / CUDA中的模板方法是3个角括号(&lt;&lt;&lt;)
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- C 建造者Clang STD :: Sill,找不到超载的操作员&lt;
- Android CMake "致命错误: 'bits/libc-header-start.h' 文件未找到"
- 为什么STD :: MAP需要操作员&lt;以及我如何写一个
- 为什么“操作员”需要const但不是为“运营商&lt;”
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- 由mpglib输出的"hip: Can't rewind stream by 74 bits"到底意味着什么?