gpt4 book ai didi

rust - 如何在不使用 std 的情况下构建具有稳定 Rust 的标准 Linux .so 库?

转载 作者:行者123 更新时间:2023-11-29 08:07:47 25 4
gpt4 key购买 nike

cargo .toml:

[package]
name = "proba"
version = "0.1.0"

[lib]
name = "mycoollib"
path = "src/mycoollib.rs"
crate-type = ["cdylib"]

src/mycoollib.rs:

#![no_std]

fn func(v: i32) -> i32 {
v + 10
}

当我尝试运行 cargo build 时:

error: language item required, but not found: `panic_fmt`
error: language item required, but not found: `eh_personality`

需要每晚构建来实现 panic_fmteh_personality,但是 "Using Rust Without the Standard Library" Rust 书的作者说库可以建立在稳定的基础上。

最佳答案

我认为文档在这种情况下具有误导性。问题出在“图书馆”这个词的定义上。

Rust 库(有时称为 rlib)可以使用 #[no_std] 并且不需要 panic_fmt 的定义嗯_个性。这是因为最终它会被链接到一个使用标准库的二进制文件中,标准库定义了这些符号。

native 库(dylibcdylib,或者可能是staticlib)不能保证与这些符号/语言项链接,因此必须预先定义它们。

如您所见,这两者都可以称为“图书馆”。我认为这本书的术语有点松散,导致困惑。

关于rust - 如何在不使用 std 的情况下构建具有稳定 Rust 的标准 Linux .so 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43097676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com