在Ubuntu的32位上交叉编译64位程序时缺少“bits / c ++ config.h”怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我正在运行Ubuntu 10.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文件,但他们居住下i486-linux-gnui686-linux-gnu目录中/usr/include/c++/4.4/没有c++config.h/usr/include/c++/bits

提问于
用户回答回答于

部分地添加这个答案是因为它解决了我同样问题的问题,所以我可以自己为此问题添加书签。

我能够通过执行以下操作来修复它:

sudo apt-get install gcc-multilib g++-multilib

如果你已经安装了一个gcc/ g++默认不发布的版本(比如g++-4.8在lucid上),你也需要匹配这个版本:

sudo apt-get install gcc-4.8-multilib g++-4.8-multilib
用户回答回答于

你尝试添加-I/usr/include/c++/4.4/i486-linux-gnu-I/usr/include/c++/4.4/i686-linux-gnu

扫码关注云+社区