Компилировать программу для 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-битные инструкции.
Ответы
Ответ 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