相关疑难解决方法(0)

在Ubuntu中交叉编译32位的64位程序时,缺少包含"bits/c ++ config.h"

我正在运行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-gnui686-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具有缺失包含文件的子目录.知道什么包应该照顾这个吗?

ubuntu g++ cross-compiling 32bit-64bit ubuntu-10.10

166
推荐指数
3
解决办法
16万
查看次数

标签 统计

32bit-64bit ×1

cross-compiling ×1

g++ ×1

ubuntu ×1

ubuntu-10.10 ×1