GCC tiene todo tipo de opciones para controlar cómo funciona. Aquí hay algunos relevantes:
-nostdlib
para omitir el enlace a las bibliotecas estándar y el código de inicio-nostdinc
Para omitir la búsqueda de archivos de encabezado en las ubicaciones estándar.-ffreestanding
compilar para un entorno independiente (como un núcleo)
Tampoco necesita usar GCC para vincular. Puede invocar el enlazador directamente, suministrarlo con su propio mapa de enlazador, código de objeto de inicio y cualquier otra cosa que necesite.
La construcción del núcleo de Linux parece, por razones arbitrarias para no usar -ffreestanding
Sin embargo, sí controla la etapa de enlace y garantiza que el núcleo se vincule sin atraer ningún código del espacio de usuario.