Linkers are programs which link together several object modules and libraries to form a single, coherent, executable image. Object modules are the machine code output from an assembler or compiler and contain executable machine code and data together with information that allows the linker to combine the modules together to form an executable image. For example one module might contain all of a program's database functions and another module its command line argument handling functions. Linkers fix up references between these object modules, where a route or data structure referenced in one module actually exists in another module. The Linux kernel is a single, large, program linked together from its many constituant object modules.