网上关于FreeNOS编译运行讲解资料不全,而且大多或多或少存在错误,此处给出实际编译运行步骤以及避免错误操作,为学习FreeNOS搭建一个良好的学习平台。
FreeNOS是一个使用C++编写的一个具有完整多任务调度,进程间通信以及中断处理等功能作系统,还包括文件系统挂载,文件节点创建,基本上涵盖了一个操作系统启动初期的实地址模式到保护模式的跳转,初始化硬件资源以及实现内核态与用户态的陷阱门接口,加载设备驱动,最后进入shell终端,是学习操作系统很好的一个开源项目。
项目主页 www.freenos.org,该项目源码使用C++编写,使用了许多经典的设计模式,模块类,虚函数也运用的十分巧妙,对深刻学习理解C++编程有很大的帮助作用。
至于如何编程以及运行FreeNOS,官网上有十分详细的说明,环境搭建如下:
http://www.freenos.org/documentation/freenos-developers-handbook.html
建议使用32bit 的ubuntu进行编译,64bit会在指令上编译报错,需要额外处理,此处选择 ubuntu 12.04 32bit,下载源码FreeNOS-0.0.4:
http://www.freenos.org/pub/index.html
在ubuntu上解压之后输入scons iso进行编译:
此处需要注意的是g++版本不要选择的太高,否则即使编译成功后面使用qemu运行镜像文件在启动方面会存在问题,不能进入shell终端。小编自己最开始使用g+±4.9版本编译通过之后使用qemu启动镜像之后一直进不去shell终端,后来怀疑g++版本过高,于是后面使用g+±4.6.3编译之后使用qemu启动镜像之后进入令人激动的shell终端:
在官网也有说明,建议选择相近版本g++进行编译:
如果在编译过程中出现警告错误,即g++把所有warnings当作Error,可以修改编译标志,如下所示:
在site_scons目录下的build.py中,去掉(注释或者删除)关于-Werror:
处理之后:
按照以上部分基本就可以编译运行成功。
后面下节再说明如何看FreeNOS的源码以及镜像启动执行流程。
在ubuntu上编译运行FreeNOS(一)
最新推荐文章于 2022-09-14 15:23:06 发布