[TOC]
实验环境搭建
系统准备
官方教程:6.S081 / Fall 2021 (mit.edu)
我这里使用的是 wsl2下的ubuntu22
克隆源码
git clone git://g.csail.mit.edu/xv6-labs-2021克隆后只有一个.git文件夹,检查版本管理分支,这里每一个分支都代表一个作业
git branch --remote
切换到util分支
git checkout util
Branch 'util' set up to track remote branch 'util' from 'origin'.
Switched to a new branch 'util'
环境依赖
不同环境的包管理器不同,ubuntu使用的是arch
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu 测试安装
测试能否启动xv6:
make qemu
# 一大段输出并进入qemu模拟的xv6的shell,<C-a> x退出
# 在shell中你可以运行 ls,cat,echo等命令测试工具链
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 9.2.0
$ qemu-system-riscv64 --version
QEMU emulator version 4.1.0
错误处理:自己编译工具链
如果报错,即使能运行xv6,也无法调试,那么可能得自己编译了:
下载源代码(百度网盘):
$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
配置编译后路径,mit网站上是/usr/local,而github仓库是/opt/riscv,我这里折中取/usr/local/riscv
sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build # 编译依赖项
./configure --prefix=/usr/local/riscv
make # 可能需要sudo
# make -j8 # 多线程提速,8指8个线程
# make install # 可能的步骤配置环境变量
vim ~/.bashrc # 如果是zsh等shell改成相应rc文件
export PATH="$PATH:/usr/local/riscv/bin" # 在文件最后写入
source ~/.bashrc如何调试
参考
官方: