Open1

rust build on Apple Silicon

KumassyKumassy

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)

https://twitter.com/kumassy_/status/1493877768966537220

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}

https://twitter.com/kumassy_/status/1493878634129821696