MIT6.828
环境配置
环境配置是个大坑
直接按照课程教程
https://pdos.csail.mit.edu/6.828/2017/tools.html
安装ubuntu(32位),我之前安装64,后来各种报错。ubuntu安装时,插上蓝牙键盘或鼠标设备有时也报错,显示cpu不兼容。
参考:https://www.cnblogs.com/kinvy/p/15074844.html <———-亲测有效
复制过来仅作记录
1.测试编译工具
shell
1 | objdump -i |
1 | gcc -m32 -print-libgcc-file-name #测试gcc |
上面这条命令是测试gcc的,一般系统是没有gcc的,需要安装
安装gcc , gdb, git, vim
1 | sudo apt-get install -y build-essential gdb git vim |
安装32位的支持库
1 | sudo apt-get install gcc-multilib |
2. 编译安装工具链
2.1下载以下工具包
- ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.bz2
- https://www.mpfr.org/mpfr-3.1.2/mpfr-3.1.2.tar.bz2
- http://www.multiprecision.org/downloads/mpc-0.9.tar.gz
- http://ftpmirror.gnu.org/binutils/binutils-2.21.1.tar.bz2
- http://ftpmirror.gnu.org/gcc/gcc-4.6.4/gcc-core-4.6.4.tar.bz2
- http://ftpmirror.gnu.org/gdb/gdb-7.3.1.tar.bz2
第一个包可能下载不了,可以自己搜索,或是使用下面的链接
https://mirrors.sjtug.sjtu.edu.cn/gnu/gmp/gmp-5.0.2.tar.bz2
2.2 编译安装
为了方便,将以上6个压缩包放在一个文件夹下 ,~/download/mit6.828
文件夹结构
以下的操作都是在
~/download/mit6.828
目录下
安装gmp-5.0.2
1
2
3
4
5
6tar xjf gmp-5.0.2.tar.bz2
cd gmp-5.0.2
./configure --prefix=/usr/local # 可能的错误:No usable m4 in $PATH or /usr/5bin (see config.log for reasons).
make
sudo make install
cd ..逐条执行命令,每执行一条后,输出无
error
就可往下执行,后面几个安装包也是一样的可能的错误是第3个命令,如果报错,执行以下命令,然后再次执行第3行命令
1
sudo apt install m4
安装mpfr-3.1.2
1
2
3
4
5
6tar xjf mpfr-3.1.2.tar.bz2
cd mpfr-3.1.2
./configure --prefix=/usr/local
make
sudo make install
cd ..安装mpc-0.9
1
2
3
4
5
6tar xzf mpc-0.9.tar.gz
cd mpc-0.9
./configure --prefix=/usr/local
make
sudo make install
cd ..安装binutils-2.21.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14tar xjf binutils-2.21.1.tar.bz2
cd binutils-2.21.1
./configure --prefix=/usr/local --target=i386-jos-elf --disable-werror
make
sudo make install # This step may require privilege (sudo make install)
cd ..
测试
i386-jos-elf-objdump -i
成功安装会输出类似下面的信息
BFD header file version (GNU Binutils) 2.21.1
elf32-i386
(header little endian, data little endian)
i386...安装gcc-core-4.6.4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21tar xjf gcc-core-4.6.4.tar.bz2
cd gcc-4.6.4
mkdir build
cd build
../configure --prefix=/usr/local \
--target=i386-jos-elf --disable-werror \
--disable-libssp --disable-libmudflap --with-newlib \
--without-headers --enable-languages=c MAKEINFO=missing
make all-gcc
sudo make install-gcc
make all-target-libgcc #可能会报错 [configure-target-libgcc] Error 1
sudo make install-target-libgcc
cd ../..
测试
i386-jos-elf-gcc -v
成功安装会输出类似下面的信息
Using built-in specs.
COLLECT_GCC=i386-jos-elf-gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i386-jos-elf/4.6.4/lto-wrapper
Target: i386-jos-elf执行11行命令可能会报错,如果报错,执行以下命令,然后再次执行第11行命令
1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
安装gdb-7.3.1
1
2
3
4
5
6
7tar xjf gdb-7.3.1.tar.bz2
cd gdb-7.3.1
./configure --prefix=/usr/local --target=i386-jos-elf --program-prefix=i386-jos-elf- \
--disable-werror
make all #可能的错误 no termcap library found
sudo make install
cd ..可能报错的命令第5个,如果出现错误,执行以下命令,然后再执行该命令
1
2
3
4
5
6wget http://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
tar -zxv -f termcap-1.3.1.tar.gz
cd termcap-1.3.1
./configure
make
sudo make install
安装 QEMU
1. 安装工具包
1 | sudo apt install libsdl1.2-dev libtool-bin libglib2.0-dev libz-dev libpixman-1-dev |
2. 下载qemu
qemu需要用6.828定制的
1 | git clone https://github.com/mit-pdos/6.828-qemu.git qemu |
3. 编译安装
1 | ./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="i386-softmmu x86_64-softmmu" --python=python2 |
可能的错误:
缺少一个头文件,错误如下
1
2
3
4
5
6
7
8
9qga/commands-posix.c: In function ‘dev_major_minor’:
qga/commands-posix.c:633:13: error: In the GNU C Library, "major" is defined
by <sys/sysmacros.h>. For historical compatibility, it is
currently defined by <sys/types.h> as well, but we plan to
remove this soon. To use "major", include <sys/sysmacros.h>
directly. If you did not intend to use a system-defined macro
"major", you should undefine it after including <sys/types.h>. [-Werror]
*devmajor = major(st.st_rdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~解决:在 qga/commands-posix.c文件中的 #include <sys/types.h> 下面增加#include <sys/sysmacros.h>即可
4.测试
1 | 下载实验源码 |
测试成功
vscode连接ubuntu
连接时一直显示失败,但是termius可以连接上
应该是vscode不支持此版本的ubuntu
换到clion后,可以使用