Embedded 使用不带stdlib的货物的集合

Embedded 使用不带stdlib的货物的集合,embedded,rust,rust-cargo,Embedded,Rust,Rust Cargo,我目前正试图建立一个嵌入式生锈项目。因此,如果我可以使用集合板条箱(并且扩展alloc板条箱,因为它是集合所需要的),那就太好了。有没有一个简单的方法来实现这一点?我目前在Cargo.toml中有以下依赖项 [build-dependencies] gcc = "0.3" [dependencies] rust-libcore = "*" [dependencies.rlibc] git = "https://github.com/hackndev/rlibc" branch = "zinc

我目前正试图建立一个嵌入式生锈项目。因此,如果我可以使用
集合
板条箱(并且扩展
alloc
板条箱,因为它是
集合
所需要的),那就太好了。有没有一个简单的方法来实现这一点?我目前在Cargo.toml中有以下依赖项

[build-dependencies]
gcc = "0.3"

[dependencies]
rust-libcore = "*"

[dependencies.rlibc]
git = "https://github.com/hackndev/rlibc"
branch = "zinc"
并按如下方式使用它们:

#![no_std]
#![crate_type="staticlib"]
#![feature(lang_items)]
#![feature(start)]

// This is not found when building with Cargo
extern crate collections;

//#[cfg(target_os = "none")]
extern crate rlibc;

#[start]
pub fn main(_argc: isize, _argv: *const *const u8) -> isize {
    // or some call like this
    core::collections::Vec::new();

    0
}

是否有一种简单的方法来包含
集合
板条箱?

一种可能的解决方案是自己编译它。这需要对锈源进行检查。我没有一个工作环境来测试这一点,所以对这个建议持保留态度。从概念上讲,您可以这样做:

cd$RUST\u SRC\u DIR
rustc--version--verbose | grep commit hash#获取hash
git checkout$RUSTC_HASH
mkdir交叉编译库
rustc--target=arm whatever-O src/libcollections/lib.rs\
--out dir交叉编译库
对需要的库重复最后一步。其中很多都是从中的想法中提取出来的

这个解决方案的一个大问题是libcollections需要一个分配器。通常,有jemalloc或系统分配器。我不知道你编译的目标上是否有这两个选项

这也不能让你一路找到一种易于使用的货物。铁锈里面的东西实际上也还没有被分解。您可以创建一个新的Cargo项目,并将类似的内容添加到
Cargo.toml

[lib]
path = "/path/to/rust/src/libcollections/lib.rs"

这将使您更加依赖Cargo。

一个可能的解决方案是自己编译它。这需要对锈源进行检查。我没有一个工作环境来测试这一点,所以对这个建议持保留态度。从概念上讲,您可以这样做:

cd$RUST\u SRC\u DIR
rustc--version--verbose | grep commit hash#获取hash
git checkout$RUSTC_HASH
mkdir交叉编译库
rustc--target=arm whatever-O src/libcollections/lib.rs\
--out dir交叉编译库
对需要的库重复最后一步。其中很多都是从中的想法中提取出来的

这个解决方案的一个大问题是libcollections需要一个分配器。通常,有jemalloc或系统分配器。我不知道你编译的目标上是否有这两个选项

这也不能让你一路找到一种易于使用的货物。铁锈里面的东西实际上也还没有被分解。您可以创建一个新的Cargo项目,并将类似的内容添加到
Cargo.toml

[lib]
path = "/path/to/rust/src/libcollections/lib.rs"

这样,您就可以更加依赖Cargo了。

您的嵌入式设备上是否有一些底层分配器可供使用?我不知道jemalloc是否支持ARM,如果不支持,则必须有一些可用的分配器。您是否有一些底层分配器可在嵌入式设备上使用?我不知道jemalloc是否支持ARM,如果不支持,就必须有一些可用的分配器。