背景
正在开发的rust项目要求在no_std的环境下运行,因此会遇到许多库中的函数无法使用的情况,记录在开发过程中针对这类问题做的修改,使整体项目能够在no_std环境中运行。
整体步骤
- 在入口代码(一般是lib.rs或者main.rs)顶部添加“#![no_std]”,告知编译器不使用标准库,重新编译代码。
- 挨个修改报错
- 用core、alloc库中的函数替代代码中使用的标准库(std)函数
如:
因为在core中有相应的ops模块(网址:https://doc.rust-lang.org/stable/core/index.html),且能找到Add函数,因此此处将std替换成core即可。 - vec![]等alloc相关的报错
在代码中加入:
#[macro_use]
// 使用alloc中的vec替代标准库中的vec
extern crate alloc;
- 以上都搞不定
考虑在std库官网找到函数源码,复制过来 - 持续补充…