Then there are some gcc quirks:
- for gcc compilation target is defined when gcc is compiled, so only way to cross-compile with gcc that I know of is emulation of target arch and runing gcc for target arch
However, we're talking about docker containers here, emulation would be the default way and path of least resistance.
Again, I will reiterate: every cross-compilation strategy falls into one of these two buckets. In some cases what I've describe in #1 is possible (WASM, java bytecode or really (almost) anything that targets a VM), in some cases it isn't and then you gotta go with #2 (docker, gcc)
- clang and LLVM don't have that GCC quirk (LLVM support less platforms, so give gcc some credit)
- it was in apple's financial interest make sure their things are easy to cross-compile.
- linker job is extremely straighforward in case of iOS
- everything is provided by either apple or application developer
So when you compiled to WASM you're going with route #1. WASM was designed with this this in mind.