Every real OS project starts with a cross-toolchain: the Linux kernel builds with dedicated cross-compilers for each of its 20+ architectures, and hobby kernels following the OSDev Bare Bones path all begin with i686-elf-gcc. The freestanding flags and linker-script discipline you set up here are the same machinery behind embedded firmware, U-Boot, and Rust's no_std targets.