用Zig辅助RUST进行跨平台交叉编译用Zig辅助RUST进行跨平台交叉编译
缘起
利用rust写的项目需要在mips64el环境下运行,并且该环境的glibc版本非常低,调研了各种方法后发现用Zig最为方便。
rust可以通过cargo-zigbuild工具利用zig的工具链方便的跨平台交叉编译,并且支持指定glibc版本。本文简单介绍使用方法。下面描述将环境分为构建机和运行机,构建机为构建打包的机器环境,运行机为程序的最终运行环境。
构建机环境准备
1.安装Rust开发环境
1 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
参考:https://www.rust-lang.org/tools/install
2.安装Zig环境
以mac为例:
1 | brew install zig |
其它系统参考:https://ziglang.org/download/
3.安装cargo-zigbuild
1 | cargo install cargo-zigbuild |
打包命令参考
1.获取运行机环境glibc版本
1 | ldd --version |
2.构建机打包
简单分为两种情况,一种是Rust官方有现成的std包,例如aarch64-linux。一种是Rust官方没有现成的std包,例如mips64el-linux,下面分别介绍这两种情况的例子
- 如果打包aarch64-linux
1 | 下载官方的std包 |
- 如果打包mips64el-linux
1 | 标准库源码安装 |