I build Go, Rust, C/C++ code for ARM/ARM64 (and MIPS) and it's completely transparent. 99.9% of the code just works, occasionally I need to worry about some details, but just once in a while.
Go definitely is the easiest, it's built in:
GOOS=linux GOARCH=arm go build
Rust is almost as easy to cross build (as long as you have the right GCC toolchains installed!):
cargo build --target aarch64-unknown-linux-musl
Sooner or later, Intel's hegemony on the server CPU market will end and it'll likely be some combo of ARM and maybe RISC-V (not sure about POWER). Cloud vendors like AWS and Google are looking closely at the margins and as the AWS a1.* [Graviton] shows, they're even willing to make their own CPUs if necessary.
That's all fine and dandy for the software you build, but then if it happens that the easiest way to get some job done is to extend an existing docker image or using an existing docker image in a multistage build, you might trip over the fact that the authors of those other images didn't care enough about your arch of choice to cross compile their stuff.
Yeah docker was just an example of modern binary dependencies. We tend to forget that kind of pain since many modern languages strongly favour source dependencies (every user of a library ends up compiling it from sources).
Go definitely is the easiest, it's built in:
Rust is almost as easy to cross build (as long as you have the right GCC toolchains installed!): Sooner or later, Intel's hegemony on the server CPU market will end and it'll likely be some combo of ARM and maybe RISC-V (not sure about POWER). Cloud vendors like AWS and Google are looking closely at the margins and as the AWS a1.* [Graviton] shows, they're even willing to make their own CPUs if necessary.