找不到 crtn.o,在 64 位系统上链接 32 位代码 [英] Cannot find crtn.o, linking 32 bit code on 64 bit system

查看:25
本文介绍了找不到 crtn.o,在 64 位系统上链接 32 位代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 64 位系统上使用 NASM 和 GCC 组装一些 32 位代码.我使用以下两个命令

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,我检查了一下,我很确定安装了 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,其中包含必要的文件: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 位代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆