Pregunta No se puede encontrar crtn.o, que enlaza el código de 32 bits en el sistema de 64 bits


Estoy intentando armar un código de 32 bits usando NASM y GCC en un sistema de 64 bits. Yo uso los siguientes dos comandos

nasm -f elf32 -g -F stabs coc.asm
gcc -m32 -o coc coc.o

NASM parece estar bien, pero LD se queja:

/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/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.6.1/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find -lc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/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.6.1/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find crtn.o: No such file or directory
collect2: ld returned 1 exit status

Estoy ejecutando Ubuntu 11.10, lo revisé y estoy bastante seguro de que está instalado libc.


7
2018-03-21 15:22


origen


Respuestas:


No está ensamblando, sino vinculando un archivo ejecutable, que necesita archivos de inicio del sistema operativo.

Parece que no tienes gcc-*-multilib instalado, que contiene los archivos necesarios: http://packages.ubuntu.com/oneiric/amd64/gcc-4.6-multilib/filelist


10
2018-03-21 15:29



Necesitas instalar gcc-multilib para obtener la lib propia de 32 bits


2
2018-03-21 15:29



Tuve un problema muy similar en ubuntu 11.10. Ver mi pregunta en SO sobre esto. Lo que me ayudó fue vincular el crt*.o a /lib/. Después de eso, nunca tuve otros problemas con este problema. Un poco más de un escándalo, pero para mí resolvió los problemas.


0
2018-03-21 15:29