Efficiency. When you compile the program, you create an object file for each source file, if you change the source file, you only need to recompile this module and then reconnect (switching is cheap). If the compiler did everything in one pass, he would have to recompile everything for each change.
It also follows the unix philosophy of small programs that do one thing, so you have a preprocessor, compiler, linker, library creator. Now these steps can be different modes of the same tool.
, , , , , - , , info .
, , , , , .., !