极小的 no_std 程序

#![no_main]
#![no_std]

use core::panic::PanicInfo;

#[panic_handler]
fn panic(_panic: &PanicInfo) -> ! {
    loop {}
}
  • 这将编译为空二进制文件。
  • std 提供了一个 panic 处理程序;如果没有它,我们就必须自行提供。
  • 其他 crate(例如 panic-halt)也可以提供该处理程序。
  • 根据目标不同,可能需要使用 panic = "abort" 进行编译,以避免出现与 eh_personality 相关的错误。
  • 请注意,未提供 main 函数或任何其他入口点;您可以自行定义入口点。通常需要使用链接器脚本和一些汇编代码进行设置工作,以便 Rust 代码能够顺利运行。