我正在运行32位版本的Ubuntu 10.10并尝试交叉编译为64位目标.根据我的研究,我已经安装了g ++ - multilib包.
该程序是一个非常简单的hello世界:
#include <iostream>
int main( int argc, char** argv )
{
std::cout << "hello world" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
g++ -m64 main.cpp
Run Code Online (Sandbox Code Playgroud)
错误:
In file included from main.cpp:1:
/usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我发现了一个c++config.h文件,但他们居住下i486-linux-gnu和i686-linux-gnu目录中/usr/include/c++/4.4/没有c++config.h的/usr/include/c++/bits.
关于我失踪的任何想法?没有-m64标志的编译工作正常(创建并正确运行a.out).
编辑感谢来自@nightcracker的提示,我对32位和64位系统上的包含结构进行了一些调查.我在下面添加了一个答案,暂时"修复"了问题,但我认为它会在下次更新时中断.基本上,我错过了一个名为的目录/usr/include/c++/4.4/i686-linux-gnu/64,该目录应包含一个名为bits具有缺失包含文件的子目录.知道什么包应该照顾这个吗?