Skip to content

开发环境搭建

本指南介绍如何搭建 NoobKernel 的开发环境。

必需工具

1. RISC-V 交叉编译工具链

NoobKernel 需要 RISC-V 64 位 ELF 格式的交叉编译工具链。

Ubuntu/Debian 安装

sudo apt update
sudo apt install gcc-riscv64-unknown-elf

手动安装(推荐)

如果系统包管理器没有提供最新版本,可以从官方下载:

# 下载预编译工具链
wget https://github.com/riscv/riscv-gnu-toolchain/releases/download/2023.10.18/riscv64-elf-ubuntu-22.04-gcc-13.2.0.tar.gz

# 解压
tar -xzf riscv64-elf-ubuntu-22.04-gcc-13.2.0.tar.gz

# 移动到系统目录
sudo mv riscv64-elf-ubuntu-22.04-gcc-13.2.0 /opt/riscv

# 添加到 PATH
echo 'export PATH=/opt/riscv/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

验证安装

riscv64-unknown-elf-gcc --version

预期输出:

riscv64-unknown-elf-gcc (GCC) 13.2.0

2. QEMU 模拟器

QEMU 用于模拟 RISC-V 64 位硬件平台。

Ubuntu/Debian 安装

sudo apt install qemu-system-misc

验证安装

qemu-system-riscv64 --version

3. GDB 调试器

用于内核调试,需要支持 RISC-V 架构的 GDB。

sudo apt install gdb-multiarch

验证:

gdb-multiarch --version

4. 其他工具

sudo apt install build-essential python3

VSCode 配置(可选)

安装扩展

推荐安装以下 VSCode 扩展:

  • C/C++ (Microsoft) - C 语言支持
  • clangd - 更强大的 C 语言智能提示(需要 clang)
  • Native Debug - 支持 GDB 调试

配置 clangd

项目已提供 compile_commands.json,clangd 可以直接使用:

// .vscode/settings.json
{
    "clangd.path": "clangd",
    "clangd.arguments": [
        "--background-index",
        "--compile-commands-dir=${workspaceFolder}"
    ]
}

配置调试

项目已包含 .vscode/launch.json 调试配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Kernel",
            "type": "gdb",
            "request": "launch",
            "target": "./build/QEMU/kernel",
            "cwd": "${workspaceRoot}",
            "gdbpath": "gdb-multiarch",
            "preLaunchTask": "Start QEMU"
        }
    ]
}

运行调试: 1. 终端执行 make vs-debug 启动 QEMU(等待 GDB 连接) 2. VSCode 按 F5 开始调试

常见问题

工具链找不到

如果编译时提示找不到 riscv64-unknown-elf-gcc

  1. 检查 PATH 环境变量是否包含工具链路径
  2. 确认工具链已正确安装
which riscv64-unknown-elf-gcc

QEMU 启动失败

确保 QEMU 版本支持 RISC-V virt 平台:

qemu-system-riscv64 -machine help | grep virt

权限问题

如果 /opt/riscv 目录权限不足:

sudo chmod -R 755 /opt/riscv

下一步

环境搭建完成后,请继续阅读 编译与运行