Rust-Cross-Compiling unter macOS

Unter Rust ist das crosscompilen, also das Erstellen von Binaries für andere Architekturen relativ einfach. Im Falle des Raspberry Pi 5, muss als Erstes die passende Zielarchitektur installiert werden:

rustup target add aarch64-unknown-linux-gnu

Da Rusts Standardbibliothek std auf C-Bibliotheken wie libc aufbaut, muss gegen das Zielsystem gelinkt werden; in diesem Fall das Linux auf dem Raspberry Pi. Dafür wird die entsprechende Toolchain benötigt:

brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu

Nun muss das bestehende Rust-Projekt noch modifiziert werden. Dazu muss eine Cargo-Konfiguration unter .cargo/config.toml erstellt werden:

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"

Anschließend kann das Release erzeugt werden:

cargo build --release --target aarch64-unknown-linux-gnu

Nach dem Buildprozess findet sich das Kompilat im Ordner target/aarch64-unknown-linux-gnu/release/ und kann auf dem Raspberry Pi ausgeführt werden.