less than 1 minute read

写这篇文章的目的是要交叉编译 arm 32架构的程序,并且使用的 C 库是 musl libc。下面的 docker 镜像主要是提供 musl 交叉编译的环境, rustup target 还是要自己换的。

添加编译标志

cd dora
mkdir .cargo && cd .cargo
vim config.toml

添加下面的内容

[target.armv7-unknown-linux-musleabi]
rustflags = ["-C", "target-feature=+crt-static"]

32 位 arm musl 编译

  1. 参考这个链接https://github.com/rust-cross/rust-musl-cross
docker pull messense/rust-musl-cross:armv7-musleabi
# 确保这个 pwd 是你的 dora 目录,进入到 docker /home/rust/src 目录
# --rm 是运行完容器之后销毁容器, -v 挂载当前目录到 docker 的 /home/rust/src
docker run --rm -it -v "$(pwd)":/home/rust/src messense/rust-musl-cross:armv7-musleabi bash
  1. 以下的所有操作是在 docker 的交互界面,添加我们需要的 target
rustup target list
rustup target add armv7-unknown-linux-musleabi
cargo build -p dora-cli --release --target armv7-unknown-linux-musleabi
  1. 编译出来的文件就在你宿主机 ./dora/target/armv7-unknown-linux-musleabi/release/ 目录下。

Updated:

Comments