Закрепить GNU-компоновщик для генерации 32-разрядных исполняемых файлов ELF
Привет. В настоящее время я создаю сборку x86 для компилятора, который я пишу, и у меня возникли проблемы с привязкой файла к моей 64-разрядной виртуальной машине (код сборки 32 бит).
Мне удалось собрать объектный файл с этой командой:
as --32 mult.S -o mult.o
но я не могу найти никаких параметров для ld
, которые заставляют его генерировать 32-битный файл ELF:
ld <some-option?> mult.o -o mult
Любая помощь будет отличной.
Ответы
Ответ 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 смотрит на первый объект и должен автоматически выбирать эмуляцию на основе формата этого объекта.