rust - 使用 no_std 的货物测试失败,错误代码为 176、160
问题描述
在 main.rs 中使用以下代码,当我运行cargo test
它时,当我在 main 函数中添加测试或任何语句时,它会返回错误代码 176。它开始返回错误代码 160。
#![no_std]
#![no_main]
#[cfg(test)]
#[macro_use]
extern crate std;
#[cfg(not(test))]
extern crate panic_halt;
#[no_mangle]
pub unsafe extern "C" fn main() {
}
从这个链接我发现,
退出代码 176 的意思是“无法在网络驱动器上安装。在您的首选项中选择另一个安装位置,然后重试安装。”
当我试图通过 lldb 找到回溯时,它返回了
错误:无效线程
我找不到任何提到类似错误的线程,所以在这里问。任何帮助表示赞赏。
使用 nightly (nightly-x86_64-apple-darwin) 谢谢。
解决方案
问题是你的main
函数,它对 unix 平台有一个无效的签名。它必须返回一个i32
(或更好c_int
,但为简单起见,我们假设它们是相同的)。这176
只是rax
离开main
函数时寄存器中的一些随机值。
因此,将您的main
签名更改为:
pub unsafe extern "C" fn main() -> i32
并返回一个返回码(例如0
,这意味着成功)
或者
pub unsafe extern "C" fn main() -> !
并exit
在 linux 上使用系统调用(或在嵌入式系统上使用无限循环)。
推荐阅读
- excel-formula - 如何通过从 A 列中选择多个不同的值来对 B 列的值求和?
- sql - 计算最近 10 条记录 postgresql 的 avg(value)
- eclipse - 将工具链添加到 Eclipse
- database - 分布式数据库中分布的是什么?
- testing - Tosca 谜题 94441 用 RBFW 解决,测试方法) - 无法转换为 SelectAttribute
- java - 如何最好地为通用模型映射器管理创建一个抽象类?为 Spring REST API 应用程序转换实体和 Dto
- arrays - 颤动中从DataRow中的firestore获取数组数据
- javascript - npm run build 不工作:错误:找不到模块'sharp'
- java - Spring Cloud kafka binder查询
- freebasic - 我在 freeBASIC 中创建类类型时遇到了一些问题