基于系统交叉构建的板条箱

Cross building sys based crates

提问人:Vana 提问时间:10/4/2022 最后编辑:Vana 更新时间:10/11/2022 访问量:631

问:

我尝试用他们的板条箱交叉构建一些生锈的包。 主机x86_64 (Ubuntu 22.04 ),目标是 aarch64 (Alpine)-sys

因此,我使用这些启用了供应商标志的板条箱来构建它们。 我在主机上安装了 musl-tools 和 musl-dev,因为 Alpine 不使用 libc。

但是得到:

error occurred: Failed to find tool. Is `aarch64-linux-musl-gcc` installed?

我在构建应用程序之前进行了设置rustup target add aarch64-unknown-linux-musl

那么一定要装槽吗?还是我必须安装其他东西?aarch64-linux-musl-gccmusl-tools

GCC Rust Arm64 MUSL

评论

0赞 Jmb 10/4/2022
aarch64-linux-musl-gcc是目标的 C 编译器。它用于将应用程序与库(包括系统库)链接起来。所以你也需要安装它,但我不知道如何在 Windows 上做到这一点。aarch64-linux-musl
0赞 Vana 10/4/2022
我在 Ubuntu x86_64工作

答:

0赞 d2718 10/4/2022 #1

我想你想要目标;我不认为是一回事。aarch64-unknown-linux-muslaarch64-linux-musl-gcc

尝试为当前工具链安装目标:

rustup target add aarch64-unknown-linux-musl

然后针对源进行构建:

cargo build --release --target aarch64-unknown-linux-musl

此外,如果要从 Windows 生成此目标,则从 WSL2 执行此操作几乎无疑会更容易。

进一步注意:虽然我从来没有为,但我试图为阿尔卑斯山的目标建造,但我从未让它工作过。我不知道你的应用程序是什么,但如果你即使使用正确的目标也无法构建,你可能会看看是否可以改用 rustlsaarch64opensslx86_64-unknown-linux-muslopenssl

评论

0赞 Vana 10/4/2022
在构建我的应用程序之前,我已经这样做了。我的应用程序 deps 中还有 lzma-sys、zstd-sys 和 brotli-sysrustup target add aarch64-unknown-linux-musl
0赞 d2718 10/4/2022
好的,但我的观点是,您的错误消息表明您正在尝试(有意或无意)为不存在的目标构建,您应该尝试为目标构建。aarch64-unknown-linux-musl
0赞 Vana 10/4/2022
cargo 命令目标参数是所以我猜 cargo 在构建过程中修改了这个参数?aarch64-unknown-linux-musl
0赞 d2718 10/10/2022
您是否尝试过从 WSL 而不是在本机 Windows 环境中构建它?
0赞 Vana 10/10/2022
我使用 Ubuntu 22.04,而不是 Windows