The author explains that the gcc binary, commonly referred to as the compiler, is actually a driver that coordinates the input and output between the compiler, assembler, and linker. The driver sets up the argument vectors for subprograms using specification strings (specs) that describe how and under what conditions the driver runs each subprogram. The author highlights that the driver manages temporary files, coordinates different arguments for each subprogram, and handles complex linking arguments. They also explain the syntax and functionality of specs, which are an unintuitive mini-language that controls how arguments are passed to subprograms. Overall, the article provides insight into the inner workings of the GCC driver and the complexities involved in building and linking programs.
https://wozniak.ca/blog/2024/01/02/1/index.html