rust 交叉编译 -- mac下、windows下 编译到 Linux目标环境
交叉编译
Windows 下编译到 arm64-linux
需要下载 arm 的编译 toolchain,有不同的选择:使用aarch64-none-linux-gnu 或者 aarch64-none-linux-musl。
这里使用 aarch64-none-linux-gnu
- 安装好rust,可以正常编译
- 下载 windows 下的 arm-gnu-toolchain,并安装,配置环境变量 aarch64-none-linux-gnu/bin
地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads, 选择 AArch64 GNU/Linux target (aarch64-none-linux-gnu) 安装,后配置环境变量。 在终端中执行 aarch64-none-linux-gnu-gcc -v 正常输出,证明配置完成。 - 配置 ~/.cargo/config.toml, 注意不是项目中的 Cargo.toml
[target.aarch64-unknown-linux-gnu] linker = "aarch64-none-linux-gnu-gcc" - 安装 target
执行 rustup target add aarch64-unknown-linux-gnu - 尝试编译
执行cargo build --target=aarch64-unknown-linux-gnu - glibc 版本问题
编译后,在目标机器上没有对应的glibc版本,使用静态链接,在 ~/.cargo/config.toml 修改如下 [target.aarch64-unknown-linux-gnu] linker = "aarch64-none-linux-gnu-gcc" rustflags = ["-C", "target-feature=+crt-static"]
macOS下编译到 arm64-linux
需要下载 arm 的编译 toolchain,有几种选择。
- 安装好rust,可以正常编译
- 下载 macOS下的 toolchain,并安装,配置环境变量 aarch64-none-linux-gnu/bin
地址:https://github.com/messense/homebrew-macos-cross-toolchains/releases 本机是 x86 intel处理器,目标机器是 aarch64-linux ,使用 gnu libc 选择 aarch64-unknown-linux-gnu-x86_64-darwin.tar.gz 包进行下载。 解压后,配置 macOS 环境变量。 在终端中执行 aarch64-unknown-linux-gnu-gcc -v 正常输出,证明配置完成。 - 配置 ~/.cargo/config.toml, 注意不是项目中的 Cargo.toml
[target.aarch64-unknown-linux-gnu] linker = "aarch64-unknown-linux-gnu-gcc" - 安装 target
执行 rustup target add aarch64-unknown-linux-gnu - 尝试编译
执行cargo build --target=aarch64-unknown-linux-gnu
浙公网安备 33010602011771号