rust windows 交叉编译_用Rust写操作系统(一)——实现最小内核

本文介绍了使用Rust在Windows上进行交叉编译,以创建一个独立的、不依赖操作系统的Rust程序,即裸机程序。内容涵盖安装Rust工具链、禁用标准库、实现panic_handler、处理链接错误、创建引导程序,以及最终在QEMU中运行最小内核。文章深入浅出地阐述了编写操作系统内核的基本步骤和技术要点。
摘要由CSDN通过智能技术生成

本次实验的问题总结,有需要的小伙伴可以戳这里↓

GMN23362:用Rust写操作系统(一)——问题汇总​zhuanlan.zhihu.com

一、概要说明

本实验分为三个部分:第一部分安装必要的工具链;第二部分编写裸机程序(独立式可执行程序);第三部分构建最小的“内核”系统。由于我们的目标是编写一个操作系统,所以我们需要创建一个独立于操作系统的可执行程序,又称独立式可执行程序(freestanding executable)或裸机程序(bare-metal executable)。这意味着所有依赖于操作系统的库我们都不能使用。比如std中的大部分内容(io, thread, file system, etc.)都需要操作系统的支持,所以这部分内容我们不能使用。 但是,不依赖于操作系统的rust的语言特性我们还是可以继续使用的,比如:迭代器、模式匹配、字符串格式化、所有权系统等。这使得rust依旧可以作为一个功能强大的高级语言,帮助我们编写操作系统。

二、安装工具链

1. 安装 Rust

1) 下载 Rust

• 访问Rust的官网,下载64位的rustup-init.exe。

010428e22bb150992f9b9af545723ef4.png

• 运行rustup-init.exe,选择1) Proceed with installation(default)。

58171f335a14ef0dafe6ad0b3206c911.png

425d56f157f9a0386aab50dd9833e71d.png

0da4456f3f4dfd9ea94b800c962ab89e.png

2) 安装nightly版本:在cmd中输入“rustup install nightly”。

721f4cde2463462a929598e3828c7ae9.png

3) 默认使用nightly版本:输入“rustup default nightly”。

b5a3617d2dba9674a1431016a44e9fd9.png

4) 安装bootimage,xbuild和rust-src等

• 安装bootimage: 输入“cargo install bootimage --version “ˆ0.7.3”。

c68080abaf3c65f612c9fad94593d8c3.png

• 安装xbuild:输入“cargo install cargo-xbuild”。它封装了cargo build;但它可以自动交叉编译core库和一些编译器内建库。

abd4d690d7e42813f96ce925b7520b6e.png

06714b0a9f6f5e0c2b861096d9ef82ff.png

• 安装rust-src:cargo xbuild依赖于Rust的源代码,输入“rustup component add rust-src” 安装源代码。

704b18dd3c88ce4ddda8f9026590b064.png

• 安装llvm-tools-preview:为了运行bootimage以及编译引导程序,我们需要输入“rustup component add llvm-tools-preview”安装rustup模块。

1f9d92b68dcb2758bdaaf4c93e21bcb2.png

2. 安装其他工具

• 安装 QEMU:访问QEMU官网,下载20200814版64位的QEMU。

de801a472cda85b4888f779288ee9dfa.png

三、创建裸机程序

1. 禁用标准库

1) 创建项目

• 输入“cargo new sjy_os”。

20b78298953759d393d691a6a8304f8d.png

• 发现在C:UsersGMN23362目录下创建的“sjy_os”项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值