极小的 no_std 程序

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