GeekOS编译于64位linux系统

开始GeekOS之旅的时候,一开始就碰到了小麻烦,在自己64位的Fedora上编译GeekOS的时候报如下错误:

geekos/lowlevel.o: could not read symbols: File in wrong format

断定是平台问题.再去官网看了下:
GeekOS is a tiny operating system kernel for x86 PCs.

看了后就决定换i386系统了,装上后就发现很多需要配置,太麻烦,稍微思考片刻,记得以前在编译其它i386代码时,是可以跨平台的,编译时搜索lib32库不就行了嘛.研究了下GeekOS的Makefile.

GeekOS提供的Makefile中是有编译于X64的配置的.拿 project0的Makefile来说,在第97行(GeekOS-0.3.0) 把TARGECT_CC_PREFIX打开就可以了. 但是你的OS需要安装Cross-development的开发包.

不过没关系,还有个方法就是加编译选项 -m32 和 链接选项 -m elf_i386 这样会在编译时自动去找lib32.在GeekOS的 Makefile中第100,106,109行改成如下:

100 TARGET_CC := $(TARGET_CC_PREFIX)gcc -m32                                                  
101 
102 # Host C compiler.  This is used to compile programs to execute on                        
103 # the host platform, not the target (x86) platform.  On x86/ELF
104 # systems, such as Linux and FreeBSD, it can generally be the same                        
105 # as the target C compiler.                                                               
106 HOST_CC := gcc -m32                                                                       
107 
108 # Target linker.  GNU ld is probably to only one that will work.                          
109 TARGET_LD := $(TARGET_CC_PREFIX)ld  -m elf_i386

然后改动后,你可能需要安装glibc的386版本,fedora安装如下:

yum -y install glibc-devel.i686

然后再进行编译就OK了:

cat geekos/fd_boot.bin geekos/setup.bin geekos/kernel.bin > fd.img 

镜像文件成功生成.




原文链接: http://blog.csdn.net/crazyjixiang/article/details/6847944

转载于:https://my.oschina.net/chen106106/blog/51104

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值