找不到crtn.o,在64位系统连接的32位code [英] Cannot find crtn.o, linking 32 bit code on 64 bit system
问题描述
我试图组装使用NASM和海湾合作委员会在64位系统中的一些32位code。我用下面的两个命令
I'm attempting to assemble some 32-bit code using NASM and GCC on a 64-bit system. I use the following two commands
nasm -f elf32 -g -F stabs coc.asm
gcc -m32 -o coc coc.o
NASM似乎做的很好,但LD抱怨:
NASM appears to do fine, but LD complains:
/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
我运行Ubuntu 11.10,而我检查,我pretty的安装一定的libc。
I'm running Ubuntu 11.10, and I checked and I'm pretty sure libc is installed.
推荐答案
您没有组装,但链接的可执行文件,它需要操作系统的启动文件。
You are not assembling, but linking an executable, which needs OS startup files.
看来你没有 GCC - * - multilib的
安装,它包含了必要的文件:<一href="http://packages.ubuntu.com/oneiric/amd64/gcc-4.6-multilib/filelist">http://packages.ubuntu.com/oneiric/amd64/gcc-4.6-multilib/filelist
It seems you don't have gcc-*-multilib
installed, which contains the necessary files: http://packages.ubuntu.com/oneiric/amd64/gcc-4.6-multilib/filelist
这篇关于找不到crtn.o,在64位系统连接的32位code的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!