Я запускаю 32-битную версию Ubuntu 10.10 и пытаюсь перекрестно скомпилировать 64-разрядную цель. Основываясь на моих исследованиях, я установил пакет g++ - multilib.
Программа - очень простой мир приветствия:
#include <iostream>
int main( int argc, char** argv )
{
std::cout << "hello world" << std::endl;
return 0;
}
Compile:
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-разрядных систем. Я добавил ответ ниже, что "исправляет" проблему временно, но я думаю, что она сломается при следующем обновлении. В принципе, мне не хватает директории с именем /usr/include/c++/4.4/i686-linux-gnu/64, которая должна содержать подкаталог под названием bits, который содержит отсутствующий файл include. Любая идея, какой пакет должен заботиться об этом?