xv6 Lab0: Prepare for the Lab
Lapin Gris Lv3

再开始 lab 之前,我们先进行环境配置。

配置环境

看 xv6 网站上的教程,安装依赖软件包
https://pdos.csail.mit.edu/6.828/2023/tools.html

使用 Debina/Ubuntu 系统,

apt-get update
apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

依赖安装完成后,编译运行 xv6,

git clone git://g.csail.mit.edu/xv6-labs-2023
cd xv6-labs-2023
make qemu

特别备注: 执行 make qemu 会进入 xv6 系统里,想退出 qemu, 先按 ctrl + a, 紧接着按 x 即可退出 qemu。

配置 vscode 自动代码跳转

当使用 vscode 编写 xv6 代码时候,即使安装 clangd,也是没有代码自动跳转的。因为 clangd 需要
compile_commands.json 理解项目代码,才能实现正确的代码跳转。对于 xv6 项目,我们使用 bear 将整个项目完整编译一遍,bear 会为我们生成需要的 compile_commands.json

apt install bear

cd xv6-labs-2023
bear -- make

More: https://clangd.llvm.org/installation.html#compile_commandsjson

禁用 vscode clangd 插件自动插入头文件

有时候,vscode 的 clagnd 会自动为我们加入 glibc 的头文件,
因为 xv6 不是 linux,也不使用 glibc,所以 clangd 自动加入的头文件也是错误的。 在 vscode 设置的 clangd 插件添加 --header-insertion=never 命令行选项,禁用自动插入头文件。重启 vscode 生效。
路径:
Settings -> Extensions -> clagnd -> Clangd: Arguments -> Add Item

配置 clang-format 代码格式化

clang-format 可以用于自动格式化 C/C++ 代码,为我们 xv6 写一个 .clang-format 文件后,使用 vscode 的快捷键可以自动格式化代码。

apt install clang-format

使用如下配置,此配置的风格和 xv6 代码风格最为相似,

BasedOnStyle: LLVM
SortIncludes: Never

BreakBeforeBraces: Stroustrup

SpaceBeforeParensOptions:
AfterControlStatements: true
AfterFunctionDefinitionName: true

AlwaysBreakAfterReturnType: None
AlwaysBreakAfterDefinitionReturnType: All

clang-format 支持很多配置项,自定义一个自己的喜欢代码风格也不是一件难事。

More: https://clang.llvm.org/docs/ClangFormatStyleOptions.html