我正在运行Ubuntu10.10的32位版本,并试图交叉编译到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
文件,但它们位于/usr/include/c++/4.4/
中的i486-linux-gnu
和i686-linux-gnu
目录下,/usr/include/c++/bits
中没有c++config.h
。
知道我错过了什么吗?在不使用-m64
标志的情况下编译可以正常工作(a.out可以正确创建和运行)。
编辑感谢@nightcracker的提示,我对32位和64位系统上的include结构做了更多的研究。我已经在下面添加了一个answer,它暂时“修复”了这个问题,但我认为它会在下一次更新时崩溃。基本上,我缺少一个名为/usr/include/c++/4.4/i686-linux-gnu/64
的目录,该目录应该包含一个名为bits
的子目录,该子目录包含缺少的包含文件。你知道应该用什么包来解决这个问题吗?
https://stackoverflow.com/questions/4643197
复制相似问题