Проблема с компиляцией 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/ ...

Что мне не хватает?

Matt
источник

Ответы:

39

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

Я вместо этого сделал это, который вытащил в libc6-dev-i386пакете:

apt-get install gcc-multilib
AB
источник
7

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

sudo apt-get install libc6-dev:i386

См. Также: Означает ли функция multiarch в 11.10 смерть силы - установка архитектуры?

Lekensteyn
источник
Установка libc6-dev:i386настаивала на удалении всего набора компиляторов gnu (что вызвало у меня сердечный приступ), но после использования sudo apt-get install build-essentialвсе работало отлично.
Мэтт
Для меня он также удалил nvidia-current ... переустановил без проблем, хотя.
Джефф
1
Обратите внимание, что опция, предоставленная alberge, выглядит лучше в том смысле, что она не удалит множество других вещей для установки 32-битных библиотек.
Фабио Задрозный