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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤