gpt4 book ai didi

rust - ARMv7 的独立可执行文件失败,因为它是 "cannot open shared object file"for libstd

转载 作者:行者123 更新时间:2023-12-05 07:22:56 66 4
gpt4 key购买 nike

我正在尝试使用以下方法构建一个独立的基于 Rust 的二进制文件:

cargo --target=armv7-unknown-linux-gnueabihf --release

每当我为目标系统构建二进制文件并在目标系统上复制和执行该二进制文件时,它都会崩溃:

<binary>:error while loading shared libraries: 
libstd-42431e74081a30a8.so:
cannot open shared object file: No such file or directory

这意味着它找不到动态库。

如果将动态库复制到外部 SSD 并且有指向它们的路径,则二进制文件在找到库时不会崩溃。

最初 .cargo/config 有

rustflags = ["-C","target-feature=prefer-dynamic]

我也试过

rustflags = ["-C", "target-feature=+crt-static"]

但是二进制文件仍然需要外部动态库

.cargo/config 文件内容为:

[target.armv7-unknown-linux-gnueabihf]
ar = "arm-dey-linux-gnueabi-gcc-ar"
linker = "gcc-sysroot"

[build]
rustflags = ["-C", "target-feature=+crt-static"]

我希望目标的二进制文件将在不依赖于动态 .so 或 .rlib 系统文件的情况下执行,因为我们有一个空间限制系统,其中可能没有 SSD。

最佳答案

为了后代(因为我在我的收藏中有这个供以后引用,即使我个人没有尝试过):

我相信现在使用 Rust 嵌入式团队的 Rust Cross ( https://github.com/rust-embedded/cross) 可以更轻松地实现这一点。

还有一个例子:https://gitlab.com/Spindel/rust-cross-example/基于文章:https://www.modio.se/cross-compiling-rust-binaries-to-armv7.html

关于rust - ARMv7 的独立可执行文件失败,因为它是 "cannot open shared object file"for libstd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265116/

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