免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3582 | 回复: 8
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-30 16:31 |只看该作者 |倒序浏览
小弟我在学习操作系统相关的课程。正在尝试着自己写个简单的操作系统。

可是遇到了一点问题。

我的开发平台是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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-03-31 15:31 |只看该作者
gcc -m32

论坛徽章:
0
3 [报告]
发表于 2008-03-31 21:43 |只看该作者

回复 #2 albcamus 的帖子

谢谢你的回复阿。

我这样的,可是出现错误了,不知道我哪里有不对,请指教:
$ 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

论坛徽章:
0
4 [报告]
发表于 2008-04-02 20:55 |只看该作者
自己顶一下,等待高手

论坛徽章:
0
5 [报告]
发表于 2008-04-03 00:44 |只看该作者
交叉编译似乎没这么简单,我都是找相关平台的binutils来编译。

论坛徽章:
0
6 [报告]
发表于 2008-04-03 11:58 |只看该作者
原帖由 mingyanguo 于 2008-4-3 00:44 发表
交叉编译似乎没这么简单,我都是找相关平台的binutils来编译。


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

论坛徽章:
0
7 [报告]
发表于 2008-04-04 01:26 |只看该作者
建议看看 clfs 相关的文档吧,很详细的

论坛徽章:
0
8 [报告]
发表于 2008-04-04 11:51 |只看该作者
原帖由 mik 于 2008-4-4 01:26 发表
建议看看 clfs 相关的文档吧,很详细的

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

论坛徽章:
0
9 [报告]
发表于 2008-04-08 17:59 |只看该作者
我很好奇, gcc -m32 hello.c你试过了吗?  我可是一直这么用的,包括编译MPlayer等大型开源软件。


CC='gcc -m32' ./configure --prefix=/usr
make && make install
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP