Ubuntu16.04_x64的gcc 编译32位 elf 文件

原来的格式

源文件为 main.c
若直接使用gcc 编译文件,编译出的是 ELF64 格式的。
用 readelf -e 文件名,即可查看文件的ELF的信息。

在这里插入图片描述
由上图可以看出,直接使用 gcc 编译、链接出来的elf 文件,class 是ELF64,machine是 Advanced Micro Devices X86-64。

而我们需要的是ELF32格式的,而且是要运行在intel 80386机器上。

改动后

首先是编译:

gcc -m32 -c -o main.o main.c

然后是链接:

ld -m elf_i386 main.o -Ttext 0xc0001500 -e main -o kernel.bin

在这里插入图片描述
可以看出,Class 和 Machine 都变为咱期望的样子了。

总结

也就比原来的命令多了个参数,
编译时,多了个 -m32
链接时,多了个 -m elf_i386
其它没有变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值