Подтвердить что ты не робот

Компилировать программу для 32-разрядной версии на 64-битной ОС Linux вызывает фатальную ошибку

Используя

gcc -m32 myprog.c

должен скомпилировать в 32-битной версии файл myprog.c.

К сожалению, я получаю эту ошибку:

In file included from /usr/include/stdio.h:27:0,
                 from myprog.c:1:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
#include <sys/cdefs.h>

Как я могу это исправить?

Если я не использую -m32, он работает, но использует 64-битные инструкции.

4b9b3361

Ответ 1

Чтобы скомпилировать 32-битные двоичные файлы в 64-битной версии Linux, вам необходимо установить libx32gcc пакет разработки и 32-битную библиотеку GNU C

попробуйте это

sudo apt-get install libx32gcc-4.8-dev

и

sudo apt-get install libc6-dev-i386

Ответ 2

Вам нужна поддержка gcc multilib. Установите пакет gcc-multilib. Например:.

sudo apt-get install gcc-multilib