[已解决]请教一个在x86_64平台下编译出x86_386格式文件的问题

发布于 2022-09-19 14:20:37 字数 906 浏览 8 评论 0

小弟我在学习操作系统相关的课程。正在尝试着自己写个简单的操作系统。

可是遇到了一点问题。

我的开发平台是Linux x86_64

现在要用nasm编译并链接出一个elf-i386格式的二进制文件。

我这样做:
nasm -f elf kernel.asm -o kernel.o
ld -s kernel.o -o kernel

可是总是提示:
ld: i386 architecture of input file `boot2.o' is incompatible with i38686-64 output

我查了下资料,貌似ld的-oformat这个参数可以指定输出的格式
于是我这样:
ld -s -oformat=elf32-i386 kernel.o -o kernel

可是还是不行,请问正确的方法是什么阿?

我解决了,是这样做的:

因为我只要一个能产生i386格式的ld,我直接下了个 x86的ld
http://debian.cn99.com/ubuntu/pool/main/b/binutils/
然后直接运行了这个,就搞定了。

[ 本帖最后由 破碎细胞 于 2008-4-6 22:36 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

梅窗月明清似水 2022-09-26 14:20:37

gcc -m32

错々过的事 2022-09-26 14:20:37

谢谢你的回复阿。

我这样的,可是出现错误了,不知道我哪里有不对,请指教:
$ gcc -m32 boot2.o
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.1.3/libgcc.a when searching for -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.1.3/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
collect2: ld returned 1 exit status

泪之魂 2022-09-26 14:20:37

自己顶一下,等待高手

不语却知心 2022-09-26 14:20:37

交叉编译似乎没这么简单,我都是找相关平台的binutils来编译。

三人与歌 2022-09-26 14:20:37

原帖由 mingyanguo 于 2008-4-3 00:44 发表
交叉编译似乎没这么简单,我都是找相关平台的binutils来编译。

可x86-64和x86本来就是兼容阿,应该不像一般的交叉编译那么麻烦吧。

爱*していゐ 2022-09-26 14:20:37

建议看看 clfs 相关的文档吧,很详细的

夢归不見 2022-09-26 14:20:37

原帖由 mik 于 2008-4-4 01:26 发表
建议看看 clfs 相关的文档吧,很详细的

奥~~~好的,我试试先,谢谢你的回复。

水中月 2022-09-26 14:20:37

我很好奇, gcc -m32 hello.c你试过了吗?  我可是一直这么用的,包括编译MPlayer等大型开源软件。

CC='gcc -m32' ./configure --prefix=/usr
make && make install

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文