Cross Compiling Bare-Metal systems Most bare-metal systems follow the Linux tradition: The "CROSS_COMPILE" variable sets the prefix The "ARCH" variable sets the top-level subtree Also, most bare-metal systems are based on Kconfig You can "make defconfig" (depends on $ARCH) Mode defaults live in the configs/ subdir You can interactively change the configuration "make config", "make oldconfig", "make menuconfig", ... The current configuration lives in .config (the output of configuring) This is an input file for make A corresponding header is generated for C language One problem with Kconfig is reproducing a build If it can fit, it makes sense to save .config in the binary This in addiion to the build commit, a mandatory item Please consider setting up reproducible builds for your own OS