A compiler is used to create an executable version of a program from its source code.
Multiple source files can be combined into a single executable.
Header files are used to separate declarations from definitions.
Object files are compiled versions of source files.
Object files can be combined together to form an executable using a linker.
FIXME