MIT Operating System - 1 - 环境配置

# MIT Operating System - 1 - 环境配置
## 1.1 克隆项目源代码至文件夹code
~~~
git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab
~~~

## 1.2 编译工具链
由于项目使用gcc进行编译,我们需提前准备好编译工具,同时,我们的项目是运行在32位系统上的,如果虚拟机时32位的则需要配置32位开发环境
执行
~~~
sudo apt-get install -y build-essential gdb
sudo apt-get install gcc-multilib
~~~
之前在安装编译环境时,我使用上述方法,安装了最新版本的build-essential,但是后面发现,由于项目使用较老版本的C语言风格,需使用6.x版本的gcc,所以此次配置环境,我们使用`apt-cache search build-essential` 寻找合适的开发工具版本,查找结果如下、
<img src=1.png>
并没有旧版本的build-essential,看来是我在想peach了,一会再做一遍吧

## 1.3 QEMU模拟器的安装
从官方git仓库下载
~~~
git clone https://github.com/mit-pdos/6.828-qemu.git qemu
~~~
再config之前,我们需要先做一些配置
1. 安装python2.7 `apt-get install python2.7`,并在命令中添加`--python=python2.7`选项
2. 安装pkg config    `apt-get install -y pkg-config`
3. 安装 `apt-get install zlib1g-dev `
4. 安装 `apt-get install libglib2.0-dev`
5. 安装 `apt-get install libpixman-1-dev`
最后执行配置
~~~
./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu --python=python2.7" 
~~~
出现如下输出,即表示配置成功
<img src="2.png">
最后,我们执行遇到问题最多的 make && make install
#### 问题1:
出现:
<img src="3.png">
我们打开文件/qga/command-posix.c
<img src="4.png">
添加 `include <sys/sysmacros.h>` 一句
#### 问题2:
出现:
<img src="5.png">
可以看到时fprintf的问题,这个问题搜了很久,有回答说是gcc7.x对fprintf加大了检查力度,导致我们的老代码无法执行,所以,我们把gcc降级
第一步 安装 
执行 `sudo apt-get install gcc-6`
第二步 重新建立软连接 
~~~
cd /usr/bin    #进入/usr/bin文件夹下
sudo rm -r gcc  #移除之前的软连接
sudo ln -sf gcc-6 gcc #建立gcc4.7的软连接
sudo rm -r g++  #同gcc
sudo ln -sf g++-6 g++
~~~
#### 问题3:
出现:
<img src='6.png'>
可以发现不能找到c++命令,这个问题困扰了我很久,装了许多C++相关的包,都不起作用,最后,知识把c++绑定到gcc,就可以了
在 /usr/bin 下执行 `ln -sf gcc-6 c++` 即可

最后我们再 执行 `make install` 出现
<img src="7.png">
即代表 安装成功
## 编译执行lab所需内容
~~~
make
make qemu
~~~
如果看到
<img src="8.png">
即代表环境配置成功
posted @ 2019-09-29 13:49  如果大海不死  Views(168)  Comments(0)    收藏  举报