IT民工一枚,为学弟学妹造福是我一直写博文的动力!为媳妇提供技术支持是我学习新技术的动力!为自己脱离贫困线,买到心仪的摩托车,有饭吃,有床睡,有妹把,笔耕不辍~~
2013年(54)
分类: C/C++
2013-04-21 22:14:55
Nachos的全称是“Not Another Completely Heuristic Operating System”,它是一个可修改和跟踪的操作系统教学软件。具体可参考百度百科。如果是在学习操作系统课程,并使用Nachos作为辅助教学,本文将会有所帮助。在网上没有找到使用Code Blocks搭建nachos的教程,只好自己琢磨,总算有所小成。
说明,以下操作都是在Ubuntu 11.10中进行的。
1、获取Nachos源码:可以在下载源码。下载后,右击,选择解压到此处,把解压得到的文件夹,修改名称为nachos,放在某一目录下,这里直接放在主文件夹下。
2、系统安装g++。
sudo apt-get install g++
3、直接使用gcc编译。
先将nachos\nachos3-4\code\下的Makefile文件中的
MAKE = gmake 改成 MAKE = make
然后在clean:后边加上以下几行:
clean: cd threads; rm *.o nachos cd network; rm *.o nachos cd filesys; rm *.o nachos cd test; rm *.o cd userprog; rm *.o nachos cd vm; rm *.o nachos rm -f *~ */{core,nachos,DISK,*.o,swtch.s,*~} test/{*.coff} bin/{coff2flat,coff2noff,disassemble,out}
上面的这几行是用来实现clean时清楚所有子目录下的目标文件已经可执行文件。因为原来的那行貌似不起作用。
运行终端,切换目录到nachos\nachos3-4\code下,直接输入make,回车:
正常的话,就编译成功了。再进入threads目录下,执行nachos:
若运行如上图,则表示编译成功。
再运行命令
cd .. make clean
清除目标文件及可执行文件。
4、安装Code::Blocks:在软件中心搜索Code Blocks,并安装
5、运行Code::Blocks,新建一个空工程,名称为nachosCb,其他路径如下:
下一步,编译器选择GNU GCC Compiler,完成。
6、右击工程,选择Add files recursively,选择nachos-3.4下的code目录,选择Select All:
确定,将所有文件加到工程。
7、右击工程,选择Properties,设置Makefile以及路径,勾选上This is a custom Makefile,下面的路径是Makefile所在目录,即code目录。图中使用的是相对路径:
8、选择Build targets标签,单击Add,增加一个Target,名称为Threads,其他设置如下:
说明:因为nachos下有很多子目录,执行make之后,很多目录下都会生成可执行文件nachos,它们代表nachos不同的部分。你可以为每个会生成可执行文件的目录建立一个Target,这样,在Code Blocks里可以通过在工具栏切换Target来实现运行、调试整个系统的不同部分。不过,虽然每个目录下都有各自的Makefile文件,Build的时候用的还是code目录下的那个Makefile。当然,你可以在第7步里边进行选择,不过还是建议使用code下的Makefile,比较方便。
单击确定,使得设置生效。
9、再次右击工程,选择Properties,打开上图所示窗口,Build targets选择Threads,单击上图中的Build Options按钮,找到Make Commands选项,把$target都去掉:
确定,完成操作。
10、试试能否编译、运行和调试:
在工具栏选择Target为Threads,然后执行Build。可以右击工程选择Build或者单击工具栏中的Build图标。这里是Build成功的,下图是运行截图:
11、调试。在Code Blocks中打开threads目录下的main.cc,在main函数的开始处设置一个断点,在菜单中依次选择Debug——Run或者直接按F8,则调试开始。此时,可以在菜单中依次选择Debug——Debuging Windows,添加调试时可以用到的窗口,如Watches可以显示变量值。
可以按F7一步步执行。截图如下:
12、重复第8、9步,为其他几个子目录创建Target,并删掉原来的Debug与Release,如下图:
13、关闭之前Code Block之前最好保存工程。右击工程选择Save project。