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