tutorial smart remix español curso aprender assembly x86 x86-64 ld

assembly - smart - Use ld en la plataforma de 64 bits para generar ejecutable de 32 bits



solidity español (1)

Escribí una asamblea que se ensambla con:

$as --32 -o hello.o hello.s

Luego traté de generar un ejecutable con:

$ld -o hello hello.o

Me da un error:

ld: i386 architecture of input file `ConditionalBranching.o'' is incompatible with i386:x86-64 output

Intenté usar flag -m32 o --32, pero no los llevo. No puedo encontrar una solución leyendo la página man de ld. ¿Cómo puedo generar un binario de 32 bits de mi objeto compartido de 32 bits?


Su vinculador está intentando crear un binario de 64 bits, pero su código de ensamblado fue ensamblado para una arquitectura de 32 bits. Esto crea una falta de coincidencia.

Solucione esto pasando el -m elf_i386 a su vinculador, indicándole explícitamente que cree un binario de 32 bits.