Nachos 3.4 安装教程
来源:互联网 发布:软件开发书籍 编辑:程序博客网 时间:2024/04/29 20:31
Nachos 3.4安装过程日志
环境
OS: Ubuntu 10.04.2
Editor: gedit
Nachos3.4
GCC(G++)3.4.6
安装过程
1 手动安装低版本的GCC(G++)
可能由于Nachos 3.4版本的代码太老的原因,编译Nachos需要GCC的版本要小于4.0。通过
$ gcc -v
指令查看Ubuntu自带的GCC版本,如果高于4.0则需要安装低版本的GCC。(Ubuntu 10.04.2中GCC的版本是4.4.3)
1.1 下载GCC(G++)3.4.6
Ubuntu的Software Center和 apt-get中都找不到低于4.0的GCC版本,因此需要手动下载安装,这里推荐使用北京交通大学的镜像下载,国外的镜像速度实在是太不给力了。
网址:http://mirror.bjtu.edu.cn/ubuntu/pool/main/g/gcc-3.4/
我选择的GCC版本是3.4.6,依次下载以下7个文件:
libg2c0-dev_3.4.6-1ubuntu2_i386.deb
cpp-3.4_3.4.6-1ubuntu2_i386.deb
g77-3.4_3.4.6-1ubuntu2_i386.deb
gcc-3.4-base_3.4.6-1ubuntu2_i386.deb
gcc-3.4_3.4.6-1ubuntu2_i386.deb
g++-3.4_3.4.6-1ubuntu2_i386.deb
libstdc++6-dbg_3.4.6-1ubuntu2_i386.deb
1.2 安装GCC(G++)
上述文件的安装是有顺序的,具体数序我也记不清楚。不过不用担心,双击运行gcc-3.4_3.4.6-1ubuntu2_i386.deb,Ubuntu会自动使用deb package installer安装,installer会检查包依赖,不出意外的话会出现依赖缺失的错误,看清楚缺失是哪个包实现安装就OK了(不会超出上面下载的7个文件)。
这里有个搞笑的问题,g++-3.4_3.4.6-1ubuntu2_i386.deb和libstdc++6-dbg_3.4.6-1ubuntu2_i386.deb是相互依赖的。囧。没关系,运行命令
$ sudo kpkg g++-3.4_3.4.6-1ubuntu2_i386.deblibstdc++6-dbg_3.4.6-1ubuntu2_i386.deb
就OK了。
1.3 检查GCC(G++)是否安装成功
运行命令
$ g++-3.4
$ gcc-3.4
如果提示no input files就说明安装成功了。可以进行下一步了。
2 安装make工具
如果系统中没有安装make工具,运行命令
$ sudo apt-getinstall make
稍等片刻就安装好了,由于Nachos中使用的命令是gmake,因此在make的时候会出现找不到gmake的错误提示,这里把二者link一下,运行指令
$ sudo ln/usr/bin/make /usr/bin/gmake
3 解压缩Nachos 3.4
把nachos 3.4 解压缩到/usr/local/lib/nachos-3.4中。大概会有三个目录c++example,code和doc,安装过程只需要关注code目录即可。
4 修改 Nachos 3.4准备安装
4.1 修改Makefile.dep文件,我的机器是i386平台,因此将HOST = -DHOST_MIPS这行代码注释掉。同时取消386平台后的两行代码的注释:
HOST =-DHOST_i386
CPP=/usr/bin/cpp
4.2 修改Makefile.common文件,修改默认使用的编译器为GCC(G++)3.4。找到并修改下述代码
CC = g++-3.4
LD = g++-3.4
4.3 修改code/threads/utility.h文件,注释掉代码#include <bool.h>,同时添加两条预编译代码:
#define TRUE true
#define FALSEfalse
否则会出现找不到bool.h的错误,这是由于Nachos自己定义来bool变量却又不给我们头文件,!囧,我们完全可以使用标准的bool变量代替。
4.4 修改threads/utility.cc文件,注释掉以下代码
//#ifdefHOST_SNAKE
//#include<stdarg.h>
//#else
//#ifdefHOST_SPARC
//#include<stdarg.h>
//#else
//#include"/usr/include/stdarg.h"
//#endif
//#endif
同时添加一行包含头文件的代码,#include <stdarg.h>否则会出现找不到stdarg.h的错误,通过上面的预编译代码可以看出问题所在。
4.5 修改threads/switch.s文件,这个文件中有四个预定义的块。以
#ifdef XXXX开始,#endif结束,注释掉除HOST_i386之外的三个块。修改HOST_i386块,修改.globl _ThreadRoot 为.globl ThreadRoot,SWITCH,相对应的也要把下面的两个procesure名字前的_删掉。
4.6 修改machine/sysdep.cc文件,这个文件需要修改的地方非常多,有些地方可能会忘记记录在这里或者有不同的错误发生,只要根据错误提示找到对应的代码进行修改即可。大部分的错误是函数定义出突和强制类型转化的问题。这里记录一部分。
增加两行头文件包含代码
#include <unistd.h>
#include <errno.h>
注释掉以下的所有的函数,,这些函数与unistd.h中的函数定义冲突:
int creat()
int open()
void signal()
int unlock()
int read()
int write()
int write()
int lseek()
int unlink()
extern int recvfrom()
extern int sendto()
void exit()
void exit(exitCode)
int mprotect()
int bind()
int revcfrom()
int sendto()
强制类型转换:
ReadFromSocket函数中
retVal = recvfrom(sockID, buffer,packetSize, 0, (struct sockaddr *) &uName, (socklen_t *)&size);
SendToSocket函数中
retVal = sendto(sockID, buffer, packetSize,0, (const sockaddr* ) &uName, sizeof(uName));
5 make Nachos 3.4
cd到code目录,执行命令:
$ sudo make
如果没有错误提示的话,Nachos 3.4 就编译成功了。编译成功后会在vm目录内生成一个nachos可执行文件,运行之可以看到很多Backtrace和Memory map的信息。
6 交叉编译(待续)
参考文献
http://hi.baidu.com/ruxbin/blog/item/fc923982d6454396f603a6b5.html
http://forum.ubuntu.org.cn/viewtopic.php?f=70&t=117289
http://blog.csdn.net/yang_0723sf/archive/2005/08/25/464754.aspx
- Nachos 3.4 安装教程
- Nachos 3.4 安装教程
- Nachos系统编译和安装---操作系统高级教程实验一
- Nachos及其工具安装文档
- eclipse中配置调试nachos教程
- Nachos 3.4入门的两个问题
- Ubuntu下安装Nachos所需要的MIPS交叉编译器
- nachos 3.4 实现抢占式多级队列反馈算法
- Nachos-3.4 系统调用 实现Create Open Read Write Close
- nachos资料
- nachos 学习
- Nachos随记
- 终于将nachos安装成功 写文一篇已示庆贺
- Nachos虚存
- nachos的测试
- Nachos源代码分析(一)
- Nachos指南(一)
- nachos 线程同步机制
- 计算机专业经典书籍推荐
- ACCESS数据库操作必须使用一个可更新的查询 解决办法
- ACCESS数据库操作必须使用一个可更新的查询 解决办法
- 程序出错后 程序员给测试人员的20条高频回复
- ACCESS数据库操作必须使用一个可更新的查询 解决办法
- Nachos 3.4 安装教程
- ACCESS数据库操作必须使用一个可更新的查询 解决办法
- Nachos 3.4 安装教程
- 关于分层
- JSP和Servlet面试题精选
- iframe 和 jquery
- 关于GAE/J下的JDO关系(Relationships)
- 优先级队列 + 迪斯拉算法
- cookies 的操作