Prepare a rootfs for ARM64 system. chroot into it and emulate every binary with qemu-user. Now replace gcc etc with one configured as cross-compiler, but still point its sysroot to the usual path (/usr/...).
This is equivalent to building a x86-to-aarch64 cross-compiler and point the sysroot to a ARM64 rootfs, but more intuitive to users unfamiliar with cross toolchains, and more friendly to those mad configure scripts which insist on assuming host = target and detect everything automatically.