接下来我们要做的工作,和实验准备中为操作系统「去除依赖」的工作十分类似:我们需要为用户程序提供一个类似的没有Rust std标准运行时依赖的极简运行时环境。这里我们会快速梳理一遍我们为用户程序进行的流程。
我们在 os 的旁边建立一个 user crate。此时,我们移除默认的 main.rs,而是在 src 目录下建立 lib 和 bin 子目录, 在 lib 中存放的是极简运行时环境,在 bin 中存放的源文件会被编译成多个单独的执行文件。
{% label %}运行命令{% endlabel %}
cargo new --bin user{% label %}目录结构{% endlabel %}
rCore-Tutorial
- os
- user
- src
- bin
- hello_world.rs
- lib.rs
- Cargo.toml
和操作系统一样,我们需要为用户程序移除 std 依赖,并且补充一些必要的功能。
#![no_std]移除标准库#![feature(...)]开启一些不稳定的功能#[global_allocator]使用库来实现动态内存分配#[panic_handler]panic 时终止
.cargo/config设置编译目标为 RISC-V 64console.rs实现print!println!宏