Cross compilation, Linux, x86_64 host, aarch64 target

@nerditation thank you!

Cross compilation complete in under 3 minutes, plus only 3 hours of toolchain debugging.

#7 158.1    Installed package `atuin v17.2.1` (executable `atuin`)
#7 DONE 158.3s

Dockerfile in case it helps any other poor schmucks:

#sorry, haven't published the musl-cross-make built FROM image yet
#https://github.com/rust-lang/rustup/issues/2213
RUN apk add curl libgcc musl-dev gcc
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --target aarch64-unknown-linux-musl
ENV PATH=/root/.cargo/bin:$PATH
#https://users.rust-lang.org/t/cross-compilation-linux-x86-64-host-aarch64-target/105680/4
#https://github.com/briansmith/ring/blob/e217869a513922e3e9d97a2afa75f36b653bca25/mk/cargo.sh#L72
ENV CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc
ENV AR_aarch64_unknown_linux_musl=aarch64-linux-musl-ar
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld"
RUN cargo install atuin --target aarch64-unknown-linux-musl
2 Likes