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.