Я изучаю блок, и я должен скомпилировать часть кода C в 32-разрядный исполняемый файл. Проблема - то, что я продолжаю получать эту ошибку. Я попытался установить gcc-мультиlib и g ++-lib, но он не помог. Кто-либо знает то, что могло бы продолжаться?
> gcc main.s -m32 -o main
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
Используя gcc версию 4.8.5 (4.8.5-4ubuntu4 Ubuntu) на Ubuntu 16.10.
Обновление: Добавленный команда компиляции. Я скомпилировал.s файл заранее с помощью gcc -m32 -S main.c
потому что я должен был взглянуть на Ассемблерный код.
Этот ответ от нашего родственного сайта Переполнение стека : , Как скомпилировать 32-разрядный двоичный файл на 64-разрядной машине Linux с gcc/cmake:
export CFLAGS=-m32
вопрос имеет 117-голосов, и принятый ответ также имеет 117-голосов.
Теперь оба имеют 118 после меня.
gcc-multilib
пакет только оказывает 32-разрядную поддержку для текущего компилятора по умолчанию.
, Так как Вы используете компилятор не по умолчанию (gcc-4.8
по сравнению со значением по умолчанию системы gcc-6
) необходимо будет установить базовый определенный для версии пакет мультиlib явно, например,
sudo apt install gcc-4.8-multilib
(или эквивалент от любимого диспетчера пакетов).