关于Rust使用cross进行交叉编译,openssl报错

遇到错误详情
解决:使用cross交叉编译,确保已经安装好了openssl的相关依赖,但是依然报和openssl有关的错误,此时需要在 Cargo.toml 添加openssl的依赖
查看:https://github.com/sfackler/rust-openssl?tab=readme-ov-file
1 [target.'cfg(not(target_os="windows"))'.dependencies]
2 openssl = { version = "0.10", features = ["vendored"] }

 

首先我在window平台上和window子系统Ubuntu上编译,使用 cross build --release 都是成功的,但是当我加入 --target=xxx.xxx.xx 参数的时候,就会报错,就没考虑是依赖的问题

关于rust交叉编译,有很多做了详细介绍,我对于原理也不是很懂,但还是记录下自己使用cross进行交叉编译的过程,实现过程还是比较简单的

查询支持的平台参数
1 # 查询可用的目标列表,已安装列表后边有(installed)
2 rustup target list
3 
4 # 列出所安装的Rust编译器已知的所有目标平台
5 rustc --print target-list
6 
7 # 查询已安装的编译器和toolchain
8 rustup show

 

添加 target

1 # 添加
2 rustup target add x86_64-unknown-linux-musl
 
安装交叉编译工具
1 cargo install cross
 
cargo/config.toml文件配置
1 [target.x86_64-unknown-linux-musl]
2 linker = "rust-lld"
3 rustflags = ["-C", "linker-flavor=ld.lld"]
4 
5 [target.x86_64-pc-windows-msvc]
6 rustflags = ["-C", "target-feature=+crt-static"]

 

编译打包
1 cross build --release --target=x86_64-unknown-linux-musl

 

其他:

在某天早上还能成功编译,到下午再次编译又遇到了其他问题

 被这些问题折腾累了,放弃使用cross进行交叉编译.

1. 编译window版本,直接在window机器上 cargo build --release 编译;

2. 编译linux版本,在window的linux子系统中 cargo build --release 编译,也可以使用 cargo build --release --target x86_64-unknown-linux-musl 编译;

 

相关知识点

编译过程

交叉编译

cross

静态链接和动态链接   

 

  

  

  

  

posted @ 2024-10-29 20:00  yumrano  阅读(29)  评论(0编辑  收藏  举报