我正在运行32位版本的Ubuntu 10.10,并试图交叉编译到64位目标。根据我的研究,我安装了g++-multilib包。
这个程序是一个非常简单的hello world:
#include <iostream>
int main( int argc, char** argv )
{
std::cout << "hello world" << std::endl;
return 0;
}
编译:
g++ -m64 main.cpp
错误:
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.
我找到了一个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的子目录,其中包含丢失的包含文件。知道应该用什么包来处理这个吗?