Проблема при компілюванні 32-бітного двійкового на 64-бітній машині


13

Я намагаюся компілювати програму змінного струму як 32-бітну бінарну, а не 64-бітну. Я почав, просто додавши -m32і отримав деякі помилки. Погугливши трохи, я натрапив на замітку про встановлення ia32-libs. Запуск apt-get install ia32-libsпризвів до оповіщення про те, що воно вже встановлено та в новітній версії.

Існує ланцюжок бібліотек, кожна з яких включає наступну, поки не виходить з ладу:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

Здається, що включає 32-бітові версії, інша включає /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

Що я пропускаю?

Відповіді:


40

Відповідь Лекенштейна суперечила безлічі існуючих для мене пакетів (на 64-розрядному онеріку).

Я замість цього зробив це, що потягнув у libc6-dev-i386пакет:

apt-get install gcc-multilib

7

ia32-libsлише містить деякі бібліотеки сумісності, які ще не перенесені до Multi Arch. Для компіляції 32-бітних бібліотек вам потрібно встановити 32-бітні бібліотеки та файли розробки для C:

sudo apt-get install libc6-dev:i386

Дивіться також: Чи означає функцію мультиарха в 11.10 смерть сили - архітектура встановлюється?


Інсталяція libc6-dev:i386наполягала на видаленні всього набору компіляторів gnu (що дало мені невеликий інфаркт), але після використання sudo apt-get install build-essentialвсе працювало чудово.
Метт

Для мене він також видалив поточну nvidia ... перевстановити без проблем.
Джефф

1
Зауважте, що параметр, наданий альберге, здається кращим, оскільки він не видалить багато інших речей для установки 32-бітних бібліотек.
Фабіо Задрозний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.