编译FreeNOS遇到的坑汇总

听说FreeNOS是个微内核操作系统,且用C++编写,很适合学习操作系统和C++,于是准备研究下,但第一步编译就遇到好多坑,现在汇总如下:

坑1

从GitHub的https://github.com/nieklinnenbank/FreeNOS   下载FreeNOS源码,发现不同版本的源码目录有的有site_scons目录,有的没有,如下为:master版本的目录结构如下:

master版本的没有site_scons目录,编译时报如下错误:

scons: Building targets ...
ISO build/intel/pc/boot.iso
grub-mkrescue: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory

解决方法参见 《编译FreeNOS报/usr/lib/grub/i386-pc/modinfo.sh doesn‘t exist错误》

如下为版本为0.0.4的目录,可以看到存在site_scons目录。

 存在site_scons目录,编译时不会报:

grub-mkrescue: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory

 错误,但是在后续编译时会报:

unsupported instruction ‘mov’

错误,也就是64位的机器不支持32位的汇编,网上找了各种资料都不行,有网友说装个32为的linux系统就可以,但现在主流的如Ubuntu等都不对32位支持、不提供镜像文件了,这个问题至今没有很好的办法解决。建议:还是采用无site_scons目录的版本,按照上文的方法解决掉modinfo.sh doesn't exist的错误后就可以编译通过。其实在新版本中将原来的site_scons目录删除了,将其里面的文件移到support/scons目录下了。

坑 2:

编译过程中出现警告错误,这个错误一般是对有site_scons目录的版本才会出现。即g++把所有warnings当作Error, 解决方法如下:

在site_scons目录下的build.py中,去掉(注释或者删除)关于-Werror,如下:

坑 3:

编译过程出现如下错误:

 error: ‘operator new’ takes type ‘size_t’ (‘long unsigned int’) as first parameter [-fpermissive]

这个错误一般是对有site_scons目录的版本才会出现。在site_scons目录下的build.py中,将编译选项加入-fpermissive即可,如下:

坑 4:ImportError: No module named pysvn:

解决方法:sudo apt-get install python-svn

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值