A linker is a program that takes several relocatable
object files and a collection of code libraries, does lots of memory allocation and address calculations, and finally spits out an
executable file. Over the years, linkers have grown to handle
debugging information,
C++ template instantiation, disassembly, and more.