本实验为在Ubuntu20.04搭建Nachos4.1环境
须知:网上很多使用Linux命令时会在命令前加上sudo
表示root权限,由于个人习惯,喜欢在一开始就通过su
切换到root用户再执行所有命令(目前不知道是否有什么问题)。不知道root密码的参考这篇文章ubuntu的su初始密码设置 - zxiaocheng - 博客园 (cnblogs.com)。以下使用的命令均在root用户权限下执行。
当遇到命令报错时不要慌,可能只是没有安装
由于本篇是在完成实验后写的,有些截图缺失或者借用他人的,如有侵权,联系我(github:Seanxz401)马上删除
确定当前环境
确定Ubuntu发行版本
1 | lsb_release -a |
确定Linux是64还是32位
1 | dpkg --print-architecture |
因为NachOS依赖32位的编译环境,如果你的linux系统是32位,可以跳过32位编译环境搭建。否则,需要在64位的系统中安装32位编译环境。
搭建32位环境
安装Linux基本开放环境
1 | apt install build-essential |
打开支持32位支持功能
1 | dpkg --add-architecture i386 |
安装c,c++多平台库
1 | apt install gcc-multilib g++-multilib |
温馨提醒:apt install
下载时速度过慢可以考虑给Ubuntu换源
安装32位开发环境
lib32ncurses6
1 | apt install lib32ncurses6 |
可能已经默认安装
lib32z1
1 | apt install lib32z1 lib32z1-dev |
注意lib32z1和下面的zlib1g中的1是数字1
zlib1g
1 | apt install zlib1g zlib1g-dev |
有的版本默认已安装
32位c,c++库
1 | apt install libc6:i386 |
低版本gcc编译器
1 | gcc -v # 查看gcc版本号,若低于5.3可不必再安装更低的 |
是否成功完成上一步的安装和环境搭建,可通过gcc --version
查看gcc版本情况。
搭建NachOS环境
解压
将压缩包nachos.tar.gz
放在家目录下,比如我的系统用户为sean,则压缩包位于/home/sean
目录。
1 | tar xvzf nachos.tar.gz |
解压后能看到NachOS-4.1
文件夹
编译
进入NachOS-4.1/code/build.linux
目录(一定要知道cd
命令噢)
1 | 清除以前的编译结果 |
安装交叉编译器
解压
将压缩包mips-decstation.linux-xgcc.tgz
放在根目录下。切换到根目录在命令行是cd /
,在文件管理器打开如图:
1 | 命令行移动压缩包 |
编译mips平台可执行文件格式转换工具
进入NachOS-4.1/coff2noff
目录
1 | ./configure #产生Makefile |
修改产生的Makefile文件:添加-m32
ps:关于修改文件的图片变幻多端的原因,那就是我一会儿用vscode远程连接(Remote-SSH扩展),一会儿用vim,一会儿用Ubuntu自带记事本。
交叉编译器路径
进入NachOS-4.1/code/test
目录,检查Makefile.dep下的交叉编译器路径是否正确。如果在解压mips那一步是在根目录下进行的,就不用改了。
检查上图所示的路径下是否确有这些东西,没有的话建议mips重新解压。(!!!根目录!!!)
测试
在NachOS-4.1/code/test
目录下
1 | make #编译 |
Over
装这个的时候我才知道Linux的家目录和根目录不一样。