MIT6.828实验环境配置

MIT6.828 实验环境配置

1.0 Ubuntu:使用linux操作系统
2.0 安装git
3.0 使用命令行创建了一个目录 /6.828,在该目录下初始化一个git仓库

~/6.828$ git init

4.0 JOS系统源码clone到本地

~/6.828$ git clone https://pdos.csail.mit.edu/6.828/2017/jos.git lab

5.0 打开lab文件,编译代码

~/6.828/lab$ make

发现报错,因此要安装QEMU这个仿真器

Error: Couldn't find a working QEMU executable.

安装QEMU的步骤是这样:
1.安装包。

sudo apt-get install libsdl1.2-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libz-dev
sudo apt-get install libpixman-1-dev
sudo apt-get install libtool*

2.进行配置。
打开qemu所在目录

sudo ./configure --disable-kvm --disable-werror --prefix=$HMOE --target-list="i386-softmmu x86_64-softmmu"

3.进行安装。

sudo make && make install

在以上三个步骤中,踩了非常多的坑。总结一下。
一、安装包
报错包之间的依赖有问题(网上一查一大把的bug)我试了很多方法。把apt-get换成了aptitude无用;最后是换了源解决的。
二、进行配置。
2.1 配置完后出现了这个错误:
`Disabling libtool due to broken toolchain support安装libtool包后解决的。

sudo apt-get install libtool*

三、安装
3.1 安装过程中,代码报错。
代码错误照着提示解决。打开报错文件。`

~/6.828/lab/qemu$ vim qga/commands-posix.c

在<sys/types.h>后加入<sys/sysmacros.h>

继续安装。又报了Werror。百度找到了两种解决方法,一是直接在代码中删除werror,另一种是在配置的时候处理werror,我选择的是第二种。

sudo ./configure --disable-werror --prefix==/usr/local --target-list="i386-softmmu x86_64-softmmu"

继续安装,又报了错而且想不通,这目录就是绝对路径啊。

libtool:   error: '=/usr/local/bin' must be an absolute directory name
Makefile:400: recipe for target 'install' failed
make: *** [install] Error 1

研究了老半天,抱着死马当活马医的心态,在配置里又改了路径。居然行了。

~/6.828/lab/qemu$ sudo ./configure --disable-kvm --disable-werror --prefix=$HMOE --target-list="i386-softmmu x86_64-softmmu"

但是又碰到了新的问题。
install: cannot create directory ‘/share’: Permission denied Makefile:382: recipe for target 'install-datadir' failed进入root用户试试。

~/6.828/lab/qemu$ su root

然后再安装,成功了!
输入qemu-system-i386跳出了qemu界面。

QUMU安装好之后,make lab下的代码。
报错:

lib/printfmt.c:41: undefined reference to `__udivdi3'
lib/printfmt.c:49: undefined reference to `__umoddi3'

原因是开发环境是64而我gcc,但需要的是32位,所以安装32位gcc。

sudo apt-get install gcc-multilib

再次进行make,成功!

emiko@emiko-virtual-machine:~/6.828/lab$ sudo make
+ ld obj/kern/kernel
+ as boot/boot.S
+ cc -Os boot/main.c
+ ld boot/boot
boot block is 390 bytes (max 510)
+ mk obj/kern/kernel.img

====================================================
make成功了,但没有想到make qemu失败了。
这什么 太难了搞了两天,怀疑过qem版本问题,但问了别人也是同样的版本没问题。反正试了好多方法最终参考了这位大神的解决办法 修改了一下源代码解决了 感谢他! 终于解决了!

猜你喜欢

转载自blog.csdn.net/qq_43012789/article/details/106343268