In computing, a linker or link editor is a computer system program that takes one or more s (generated by a compiler or an assembler) and combines them into a single executable file, library file, or another "object" file.
A simpler version that writes its output directly to memory is called the loader, though loading is typically considered a separate process.
Computer programs typically are composed of several parts or modules; these parts/modules do not need to be contained within a single , and in such cases refer to each other by means of symbols as addresses into other modules, which are mapped into memory addresses when linked for execution.
While the process of linking is meant to ultimately combine these independent parts, there are many good reasons to develop those separately at the source-level. Among these reasons are the ease of organizing several smaller pieces over a monolithic whole an