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

Закрепить GNU-компоновщик для генерации 32-разрядных исполняемых файлов ELF

Привет. В настоящее время я создаю сборку x86 для компилятора, который я пишу, и у меня возникли проблемы с привязкой файла к моей 64-разрядной виртуальной машине (код сборки 32 бит).

Мне удалось собрать объектный файл с этой командой:

as --32 mult.S -o mult.o

но я не могу найти никаких параметров для ld, которые заставляют его генерировать 32-битный файл ELF:

ld <some-option?> mult.o -o mult

Любая помощь будет отличной.

4b9b3361

Ответ 1

ld <some-option?> mult.o -o mult

ld -m elf_i386 mult.o -o mult

Вы можете получить список доступных архитектур с помощью:

ld -V

Пример вывода:

GNU ld (GNU Binutils for Ubuntu) 2.24
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   i386linux
   elf_l1om
   elf_k1om
   i386pep
   i386pe

Однако это не обязательно: ld смотрит на первый объект и должен автоматически выбирать эмуляцию на основе формата этого объекта.