Rust musl 交叉编译教程

前言

最近宇润在玩几年前朋友送我的树莓派,正好又在玩 Rust,所以我就想试试在电脑上交叉编译出 arm 架构的程序。

此教程同样适用于包括但不限于:Windows、Linux、MacOS、单片机等。

为什么用 musl?

linux 编译的程序主要有两种依赖:gnu 和 musl。

  • gnu 编译出的程序,依赖系统安装的 glibc 版本
  • musl 编译出的程序是完全静态的,也就是不依赖系统的 lib,兼容性更好,但编译出的文件会略大

步骤

安装 Rust 平台库

查看所有支持的平台:

网页:https://doc.rust-lang.org/rus...

命令:rustup target list

安装 Rust 平台库:

rustup target add arm-unknown-linux-gnueabi

arm-unknown-linux-gnueabi 替换为你要编译到的平台

安装编译工具链

这一步我曾经想依靠 apt 来安装,但没有 arm 平台的 musl 工具和 lib,只能自己编译。

我们使用这个项目:https://github.com/richfelker/musl-cross-make

创建 config.mak 文件,内容:

TARGET = arm-linux-musleabi # 目标平台
OUTPUT = /data/cross/armv6 # 编译安装位置
COMMON_CONFIG += CFLAGS="-g0 -Os" CXXFLAGS="-g0 -Os" LDFLAGS="-s"
GCC_CONFIG += --with-arch=armv6 --with-mode=arm --with-fpu=vfp # 编译不同平台的参数不同,注意修改

修改 Makefile 文件,把 MUSL_VER 配置值改为 1.1.24。因为默认的 1.2 版本,会导致你在编译时候报错,Rust 官方依赖的是 1.1。(这一条不排除未来 Rust 会升级依赖)

执行编译安装命令:make install

时间可能会很漫长,需要耐心等待。

最后将 /data/cross/armv6/bin 目录(同 config.mak 配置),加到环境变量。

编辑 ~/.bashrc 文件,最后一行加入:

export PATH="$PATH:/data/cross/armv6/bin"

执行命令:source ~/.bashrc

编译项目

cargo build --target arm-unknown-linux-musleabi --release

imi 框架创始人、Swoole 开发组成员、php-src 内核贡献者、TDengine 贡献者、2021 中国开源码力榜前百名。

768 声望
51 粉丝
0 条评论
推荐阅读
imi 助力 ChatGPT 应用开发,支持优雅的 SSE 服务端推送功能
imi v2.1.45 发布,支持优雅的 SSE 服务端推送功能,文档:[链接]SSE 介绍SSE 是一种服务端主动向客户端(浏览器)推送数据的技术。大名鼎鼎的 ChatGPT 的 API 接口就用了这项技术,实现逐字返回的打字机效果。服...

宇润阅读 1k

4.8 Beijing Rust Meetup | Call For Presenters
如果你有兴趣参与探讨Rust作为一种强调性能、安全和并发性的编程语言的各种应用、实践和无限可能性的头脑风暴,就一定不能错过这场来自达坦科技、南京大学、CloudWeGo、华为等技术专家带来的关于Rust编程语言相关...

Datenlord阅读 1.4k

封面图
常用Linux系统命令、vim编辑命令汇总(看一遍用时候来查)
Linux操作基本操作pwd命令作用:显示当前工作目录用法:pwdcd命令作用:改变目录位置用法:cd [option] [dir]cd 目录路径 -进入指定目录cd .. -返回父目录cd / -进入根目录cd或cd ~ -进入用户主目录ls命令用法:l...

笑忘书阅读 1.1k

倒计时3天 I 4.8 Beijing Rust Meetup
对Rust编程语言感兴趣的你准备好相聚进行一场头脑风暴了吗?赶快预约报名参与本周六下午的线下Meetup。一起和来自达坦科技、南京大学、CloudWeGo、华为等的技术专家来探讨Rust作为一种强调性能、安全和并发性的编...

Datenlord阅读 1.1k

封面图
使用rust开发android底层
本文档使用rust开发android程序,只涉及到底层开发,不涉及任何ui相关,开发前推荐安装好magisk框架,方便后面获取手机root权限,或者有别的方案可以使adb获取到root权限也行

龚正阳阅读 1k

精彩回顾|4.8 Beijing Rust Meetup
2023年4月8日,达坦科技联合南京大学、CloudWeGo、华为等技术专家成功举办了题为Rust X的meetup。开发者们不仅线下积极报名参与,更在线上直播中踊跃参与互动,一起探讨Rust作为一种强调性能、安全和并发性的编程...

Datenlord阅读 990

封面图
关于rust交叉编译的问题
获取镜像的时候由于是直接拉ghcr.io/cross-rs/*的镜像,所以国内配置的镜像是无法使用的,这个时候需要配置docker的代理服务才行

龚正阳阅读 934

imi 框架创始人、Swoole 开发组成员、php-src 内核贡献者、TDengine 贡献者、2021 中国开源码力榜前百名。

768 声望
51 粉丝
宣传栏