参数:
- 源代码= x86_x64 windows 10或x86_x64 linux(ubuntu wsl)
- 目标= armv 5 te Linux
- 目标类型= cdylib
- 目标_glibc = 2.24
- 语言=生 rust
- 构建工具=货物
- 编译器= rustc
(The目标是运行Ev3dev的Linux映像的Lego Mindstorm)
货物配置:
[package]
name = "ev3"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
jni = "0.19"
ev3dev-lang-rust = { version = "0.12.1", features=["screen"]}
jni_proc_macro= {path= "./jni_proc_macro"}
[lib]
crate-type= ["cdylib"]
[workspace]
members= ["jni_proc_macro"]
构建配置:
[build]
target = "armv5te-unknown-linux-gnueabi"
[target.armv5te-unknown-linux-gnueabi]
linker = "rust-lld"
建置错误:
error: linking with `rust-lld` failed: exit code: 1
|
= note: {...}
= note: rust-lld: error: unable to find library -lgcc_s
rust-lld: error: unable to find library -lutil
rust-lld: error: unable to find library -lrt
rust-lld: error: unable to find library -lpthread
rust-lld: error: unable to find library -lm
rust-lld: error: unable to find library -ldl
rust-lld: error: unable to find library -lc
error: could not compile `ev3` due to previous error
正如错误所示,链接器缺少库。我没有找到明确的解决方案,我可以下载和/或提供这些依赖项。
我的问题是,A有没有不同的方法来成功地构建它,或者B我如何解决这些依赖关系。
结果需要是linux和armv 5 te的共享库(.so)。
1条答案
按热度按时间6l7fqoea1#
要求
(所有的事情都是在wsl/linux中完成的)
准备/构建
在货物上安装十字架
安装扩展坞
克隆跨存储库
导航到Docker文件夹
创建一个名为“Dockerfile. armv 5 te-unknown-linux-gnueabi-cross”的新文件
将此内容粘贴到新文件中:
确保项目使用“LF”换行符。如果不是this修复它。
在克隆的存储库的根目录中使用以下命令编译自定义cross/docker构建:
这将创建一个新的docker映像,用于编译rust代码。
然后导航到目标项目文件夹并运行:
(Do不关闭此终端)
现在将以下内容添加到Cargo.toml文件中:
现在您可以运行:
许多货物选项,如“--release”可以使用(更多信息,请看信用卡中的交叉)
学分