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
posted @   bpzj  阅读(604)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示