Проблема с компиляцией 32-битного двоичного файла на 64-битной машине

Я пытаюсь скомпилировать c-программу как 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/ ...

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

9
задан 1 January 2012 в 14:34

2 ответа

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

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

apt-get install gcc-multilib
25
ответ дан 25 May 2018 в 15:32

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

sudo apt-get install libc6-dev:i386

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

7
ответ дан 25 May 2018 в 15:32
  • 1
    Установка libc6-dev:i386 настаивала на удалении всего набора компиляторов gnu (который дал мне небольшой сердечный приступ), но после использования sudo apt-get install build-essential все работало отлично. – Matt 2 January 2012 в 03:14
  • 2
    Для меня он также удалил nvidia-current ... переустановил без проблем. – Jeff 12 May 2012 в 07:48
  • 3
    Обратите внимание, что опция, заданная alberge, кажется лучше, поскольку она не удалит множество других вещей для установки 32-разрядных библиотек. – Fabio Zadrozny 7 September 2012 в 23:53

Другие вопросы по тегам:

Похожие вопросы: