Gcc 找不到crtn.o,正在链接64位系统上的32位代码

Gcc 找不到crtn.o,正在链接64位系统上的32位代码,gcc,64-bit,nasm,ld,Gcc,64 Bit,Nasm,Ld,我试图在64位系统上使用NASM和GCC汇编一些32位代码。我使用以下两个命令 nasm -f elf32 -g -F stabs coc.asm gcc -m32 -o coc coc.o NASM似乎做得不错,但LD抱怨: /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: skip

我试图在64位系统上使用NASM和GCC汇编一些32位代码。我使用以下两个命令

nasm -f elf32 -g -F stabs coc.asm
gcc -m32 -o coc coc.o
NASM似乎做得不错,但LD抱怨:

/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

我正在运行Ubuntu11.10,我检查过了,我很确定libc已经安装。

你不是在组装,而是在链接一个需要操作系统启动文件的可执行文件


您似乎没有安装包含必要文件的
gcc-*-multilib

我在ubuntu 11.10上遇到了一个非常类似的问题。对我有帮助的是将
crt*.o
链接到
/lib/
。从那以后,我再也没有在这个问题上遇到过其他问题。有点麻烦,但对我来说它解决了问题。

您需要安装
gcc multilib
,以获得正确的32位lib

可能的副本