Question: What is the difference between a compiler and a linker in C?

Answer: 
A compiler generates object code files (machine language) from source code.

A [linker](http://en.wikipedia.org/wiki/Linker_%28computing%29) combines these object code files into an executable.

Many IDEs invoke them in succession, so you never actually see the linker at work. Some languages/compilers do not have a distinct linker and linking is done by the compiler as part of its work.
**In Simple words** -> Linker comes into act whenever a '.obj' file needs to be linked with its library functions as *compiler doesn't understand what is (scanf or printf..etc)* , compiler just converts '.c' file to '.obj' file if there's no error without understanding library functions we used. So To make 'obj' file to 'exe'(executable file) *we need linker because it makes compiler understand of library functions*.