GCC - Скомпилируйте 32-битный код в 64-разрядной системе

Я изучаю блок, и я должен скомпилировать часть кода 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 потому что я должен был взглянуть на Ассемблерный код.

2
задан 15 April 2017 в 05:00

2 ответа

Этот ответ от нашего родственного сайта Переполнение стека : , Как скомпилировать 32-разрядный двоичный файл на 64-разрядной машине Linux с gcc/cmake:

export CFLAGS=-m32

вопрос имеет 117-голосов, и принятый ответ также имеет 117-голосов.

Теперь оба имеют 118 после меня.

0
ответ дан 15 April 2019 в 18:27

gcc-multilib пакет только оказывает 32-разрядную поддержку для текущего компилятора по умолчанию.

, Так как Вы используете компилятор не по умолчанию (gcc-4.8 по сравнению со значением по умолчанию системы gcc-6) необходимо будет установить базовый определенный для версии пакет мультиlib явно, например,

sudo apt install gcc-4.8-multilib

(или эквивалент от любимого диспетчера пакетов).

5
ответ дан 2 December 2019 в 01:55

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

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