Итак, у меня установлен 32-битный Xubuntu 14.04.1. У нас есть некоторый интерфейсный код, в котором мы намереваемся выпустить SO для различных платформ, которые мы поддерживаем, и библиотеки Windows DLL. (Да, я знаю, бинарный релиз плох, но здесь тоже не актуален.)
Я пытаюсь создать 32-битные и 64-битные SO с 32-битными 14.04.01, используя аргументы -m32
/ -m64
gcc / g ++. 32-разрядная версия работает нормально, но 64-разрядная версия не работает с
/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory
При включении включается, что файл действительно присутствует для 32-разрядных, но отсутствует для 64-разрядных.
Погуглив проблему, похоже, это случалось в прошлом для GCC / G ++ 4.6, но затем помечалось как исправленное. Но 14.04.1 использует GCC / G ++ 4.8, что говорит о регрессии в этих библиотеках в GCC / G ++ 4.8. Это то, что кто-то еще видел?
Я мог бы при необходимости установить новую виртуальную машину для 64-битной 14.04.1 и посмотреть, подберут ли она правильные версии библиотеки. Я предпочел бы, если это возможно, потому что у меня есть куча других вещей, которые мне также придется переустанавливать. Есть ли лучшее решение? И если бы я установил 64-битную версию 14.04.1, смогу ли я кросс-компилировать обратно в 32-битную версию без пропущенных заголовков в другом направлении?
g++-multilib
пакет?Ответы:
Файл config.h для 64-битных бит / c ++ предоставляется в 32-битных системах (и наоборот) путем установки
g++-multilib
пакета, поэтому вам необходимо установить этот пакет либо с помощью Software Center, Synaptic, либо через терминал с помощьюЭто просто пакет зависимостей, который разрешается
g++-4.8-multilib
для версии gcc / g ++ по умолчанию и, в свою очередь, зависит отlib64stdc++-4.8-dev
(64-битная компиляция на 32-битной) илиlibx32stdc++-4.8-dev
(32-битная компиляция на 64-битной) - это те, которые содержат фактические заголовочные файлы.Существует эквивалентный набор пакетов для простого компилятора Си
gcc
.источник
sudo apt-get install g++-5-multilib
достал мне ту версию, которая мне была нужна. Если это не работает для вас, примечаниеsudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update
также является частью моего конфига.