Я запускаю 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. Любая идея, какой пакет должен заботиться об этом?