我正在尝试在 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
我正在运行 Ubuntu 11.10,我检查过并且非常确定 libc 已安装。
最佳答案
您不是在汇编,而是链接一个可执行文件,它需要操作系统启动文件。
您似乎没有安装 gcc-*-multilib
,其中包含必要的文件:http://packages.ubuntu.com/oneiric/amd64/gcc-4.6-multilib/filelist
关于gcc - 无法找到 crtn.o,在 64 位系统上链接 32 位代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807581/