Отсутствует включить «bits / c ++ config.h» при кросс-компиляции 64-битной программы на 32-битной в Ubuntu

Я использую 32-битную версию Ubuntu 10.10 и пытаюсь выполнить кросс-компиляцию для 64-битной цели. На основании своих исследований я установил пакет g ++ - Multilib.

Программа очень проста, привет мир:

#include 

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 ++ .h файл, но они находятся в каталогах i486-linux-gnu и i686-linux-gnu в / usr / include / c ++ / 4.4 / ] Нет c ++ config.h в / usr / include / c ++ / bits .

Есть идеи, что мне не хватает? Компиляция без флага -m64 работает нормально (a.out создается и работает правильно).

Edit Благодаря подсказке от @nightcracker, Я провел еще немного исследований структуры включения в 32- и 64-битных системах. Я добавил ответ ниже, который временно «устраняет» проблему, но я думаю, что он выйдет из строя при следующем обновлении. По сути, мне не хватает каталога с именем / usr / include / c ++ / 4.4 / i686-linux-gnu / 64 , который должен содержать подкаталог с именем bits , в котором отсутствует включаемый файл. Есть идеи, какой пакет должен позаботиться об этом?

166
задан Community 23 May 2017 в 12:34
поделиться