linux assembly x86 ld elf

linux - Forzar el enlazador GNU para generar ejecutables ELF de 32 bits



assembly x86 (1)

Hola. Actualmente estoy generando un ensamblado x86 para un compilador que estoy escribiendo y tengo algunos problemas para vincular el archivo en mi VM de 64 bits (el código de ensamblaje es de 32 bits).

Pude ensamblar bien el archivo objeto con este comando:

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

pero parece que no puedo encontrar ninguna opción para ld que haga que genere un archivo ELF de 32 bits:

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

Cualquier ayuda sería genial.


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

ld -m elf_i386 mult.o -o mult

Puede obtener una lista de las arquitecturas disponibles con:

ld -V

Salida de muestra:

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

Sin embargo, eso no debería ser necesario: ld mira el primer objeto, y debería seleccionar automáticamente la emulación según el formato de ese objeto.