Mac OSX中编译成其它平台程序,如:Linux(x86、ARM)、Windows等,需要构建交叉编译工具链,交叉工具链的构建在Mac中是一个痛苦的过程!!!
有人帮我们解决了这个问题,musl-cross-make
的出现使我们轻松的实现这个目的,Homebrew中可以直接安装。
brew install FiloSottile/musl-cross/musl-cross --without-x86_64 --with-arm
可通过选项安装支持的目标平台--with-arm
,这个选项表示可支持armv7l(pcDuino1)平台,如果你想支持armv7hl(树莓派)请使用--with-arm-hf
,还有其它平台-with-i486(x86 32-bit)
完成后程序被安装在/usr/local/Cellar/musl-cross/0.9.8/
目录中,相关的执行文件将会比链接到/usr/local/bin/
目录中。
Rust中编译armv7l平台执行文件
Rust中添加armv7l支持
rustup target add armv7-unknown-linux-musleabi
将如下内容加入~/.cargo/config
文件,就可以了。
[target.armv7-unknown-linux-musleabi] linker = "arm-linux-musleabi-ld"
生产执行文件
cargo build --target=armv7-unknown-linux-musleabi