在嵌入式系统、操作系统内核或资源受限环境中,我们常常无法使用 Rust 的标准库(std)。这时,就需要使用 no_std 环境进行开发。本文将手把手教你如何在 Rust no_std 环境下编写程序,即使你是初学者也能轻松上手!
no_std 是 Rust 中的一个属性,用于告诉编译器不要链接标准库(std)。这意味着你将失去如 println!、文件 I/O、线程等高级功能,但换来的是更小的二进制体积和对底层硬件的完全控制。
这在 嵌入式Rust 开发中非常常见,比如为微控制器(如 STM32、ESP32)编写固件,或者开发操作系统内核时,都需要使用 Rust无标准库开发 模式。

首先,确保你已安装 Rust 工具链。如果没有,请访问 rust-lang.org 安装。
然后,在终端中运行以下命令创建新项目:
cargo new --bin hello-nostdcd hello-nostd打开 src/main.rs 文件,将其内容替换为以下代码:
#![no_std]#![no_main]use core::panic::PanicInfo;#[panic_handler]fn panic(_info: &PanicInfo) -> ! { loop {}}#[no_mangle]pub extern "C" fn _start() -> ! { // 这里是程序入口点 loop {}}让我们逐行解释这段代码:
#![no_std]:禁用标准库。#![no_main]:不使用 Rust 默认的 main 函数作为入口。use core::panic::PanicInfo;:引入核心库中的 Panic 信息类型。#[panic_handler]:定义 panic 时的行为(这里只是死循环)。#[no_mangle] 和 _start:这是程序真正的入口点,通常由链接器或引导加载程序调用。由于没有标准库,我们需要指定一个“目标三元组”(target triple),告诉编译器生成哪种架构的代码。例如,对于裸机 x86_64 系统,我们可以使用 x86_64-unknown-none。
创建一个文件 .cargo/config.toml(注意前面有个点):
[build]target = "x86_64-unknown-none"然后安装这个目标:
rustup target add x86_64-unknown-none现在运行:
cargo build如果一切顺利,你会在 target/x86_64-unknown-none/debug/ 目录下看到生成的可执行文件。虽然它不能直接在你的电脑上运行(因为不是普通操作系统格式),但它已经是一个真正的 裸机编程Rust 程序了!
panic=abort 或自定义打印函数。Vec 属于 alloc crate,需要手动启用内存分配器。但在最简 no_std 环境中,建议使用数组或静态分配。core 库,它包含基本类型、trait(如 Copy, Clone)、Option、Result 等。通过本教程,你应该已经掌握了 Rust no_std 开发的基础知识。无论是进行 嵌入式Rust 项目,还是探索操作系统开发,Rust无标准库开发 都是你必须掌握的核心技能。记住,裸机编程Rust 虽然门槛较高,但带来的控制力和安全性是无可替代的。
下一步,你可以尝试在 QEMU 中运行你的 no_std 程序,或者将其烧录到真实的开发板上!
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128492.html