- It's a set of tools provided by the compilation system that invokes the language preprocesor, compiler, assemble and linker as needed.
- The following invokes the GNU's compilation driver to turn 2 .c files directly into an executable.
linux> gcc -Og -o prog main.c sum.c

- The actual steps the GNU compiler driver goes through are as follows:
- First invokes the C preprocessor (cpp) turning main.c to ASCII intermediate main.i
cpp [other arguments] main.c /tmp/main.i
- Then the C compiler (cc1) is invoked
cc1 /tmp/main.i -Og [other arguments] -o /tmp/main.s
- Then assembler is run
as [other arguments] -o /tmp/main.o /tmp/main.s
- The driver goes thru the same stuff to generate sum.o and finally it runs linker with ld combining all of the Relocatable Object Files (.o) to create the binary Executable Object Files.
ld -o prog [system object files and args] /tmp/main.o /tmp/sum.o