- 1、安装
binutils-arm-linux-gnueabihf
如果是ubuntu或者debain就用
apt install
;macos用brew install
apt install binutils-arm-linux-gnueabihf
armv7l 依赖的编译器链是:
binutils-arm-linux-gnueabihf
- 2、利用rustup下载并安装armv7l平台的交叉编译工具链
rustup target add armv7-unknown-linux-musleabihf
需要注意的是rust安装的依赖工具链名称和系统依赖的编译器链的名称不同
- 3、开始编译
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_MUSLEABIHF_LINKER=arm-linux-gnueabihf-ld cargo build --target=armv7-unknown-linux-musleabihf --release
这里面的几个参数的含义解释:
3.1、
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_MUSLEABIHF_LINKER=arm-linux-gnueabihf-ld
强制指定编译器链;armv7l
平台就得指定arm-linux-gnueabihf-ld
;当然指定的方式有很多种,也可以在项目根目录的Cargo.toml中配置,也可以配置环境变量的方式实现:
export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_MUSLEABIHF_LINKER=arm-linux-gnueabihf-ld
cargo build --target=armv7-unknown-linux-musleabihf --release
CARGO_TARGET_
意义等同于cargo build --target
中的--target
目标平台的意思;
ARMV7_UNKNOWN_LINUX_MUSLEABIHF
就是平台在rust中的特定名称,与--target=armv7-unknown-linux-musleabihf
的armv7-unknown-linux-musleabihf
一致;
_LINKER
链的概念,和前面几个参数组合在一块的意思就是:这个平台的构建用哪一个编译器链
3.2、
--target=armv7-unknown-linux-musleabihf
指定平台3.3、
--release
字面意思就是发行,其实就是要上线的版本的意思,这个参数构建出来文件是经过优化的
- 4、构建结果存放的目录
target/armv7-unknown-linux-musleabihf/release
- 5、不同开发环境构建的速度
我在centos (16C 32G)上构建的速度要比Macos(M2芯片)上快很多很多,不清楚为什么
Top comments (0)