In C, the preprocessor is like an editor, it processes commands
beginning with # and modifies the source code. see preprocessor for
details.
After preprocessing, the compiler translates the code to object code. It has references to computer objects that may be defined elsewhere, this needs to be linked by the linker.
The combines the object code from the compiler to additional code such as library functions.