Open1
rust build on Apple Silicon
Apple Silicon で aarch64 向けのバイナリをビルドする
Apple Silicon で x86_64 の Lima VM をたてる
host: x86_64
$ uname -a
Linux lima-default 5.13.0-28-generic #31-Ubuntu SMP Thu Jan 13 17:41:06 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
build 可能な target:
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
cross でビルドする
cross build --target aarch64-unknown-linux-gnu --release
cross build --target aarch64-unknown-linux-musl --release
file sharing との相性がわるいので、 host と share しているとうまくビルドできない (Operation not permitted)
Apple Silicon で rust container を使ってビルドする
Building on MacOS Using Docker
https://github.com/awslabs/aws-lambda-rust-runtime#aws-cli
の部分をみてビルドする
host: aarch64-apple-darwin
$ uname -a
Darwin mbp 21.2.0 Darwin Kernel Version 21.2.0: Sun Nov 28 20:28:41 PST 2021; root:xnu-8019.61.5~1/RELEASE_ARM64_T6000 arm64
build 可能な target:
- aarch64-unknown-linux-gnu
LAMBDA_ARCH="linux/arm64"
RUST_TARGET="aarch64-unknown-linux-gnu"
RUST_VERSION="1.56.1"
docker run \
--platform ${LAMBDA_ARCH} \
--rm --user "$(id -u)":"$(id -g)" \
-v "${PWD}":/usr/src/myapp -w /usr/src/myapp rust:${RUST_VERSION} \
cargo build --target ${RUST_TARGET}