我正在运行Ubuntu 10.10的32位版本并尝试将其交叉编译为64位目标。根据我的研究,我已经安装了g ++ - multilib软件包。当在Ubuntu的32位上交叉编译64位程序时缺少“位/ C++ config.h”
该计划是一个非常简单的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/
没有在/usr/include/c++/bits
c++config.h
。
关于我失踪的任何想法?编译没有-m64
标志工作正常(a.out的创建和正常运行)。
编辑感谢来自@nightcracker提示,我做了一点调查的32个和64位系统的包括结构。我已经添加了低于“修复”该问题的answer暂时但我认为这将打破在下次更新。基本上,我缺少一个名为/usr/include/c++/4.4/i686-linux-gnu/64
目录中应该包含一个名为bits
有丢失的包含文件的子目录。任何想法什么包应该照顾这个?
哇......我也有这个问题。运行Ubuntu的ARMv7上的GCC 4.8 - CubieTruck(Cortex-A7)。奇怪的事情(对我来说)是,安东尼的答案解决了它。不管... – jww 2017-07-30 04:03:17