Linker (computing): Difference between revisions

Content deleted Content added
WIPAWAN04 (talk | contribs)
Undid revision 1107808339 by 2804:7F0:B1C0:9E07:B8F3:84DC:3C5D:AB05 (talk)
Tags: Undo Reverted
Siam2019 (talk | contribs)
Undid revision 1110539330 by WIPAWAN04 (talk)
Line 8:
 
== Overview ==
Computer programs typically are composed of several parts or modules; these parts/modules do not need to be contained within a single [[object file]], and in such cases refer to each other by means of [[debug symbol|symbols]] as addresses into other modules, which are mapped into memory addresses when linked for execution. Typically, an object file can contain three kinds of symbols:
 
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 code|source]]-level. Among these reasons are the ease of organizing several smaller pieces over a [[Monolithic codebase|monolithic]] whole and the ability to better define the purpose and responsibilities of each individual piece, which is essential for managing complexity and increasing long-term maintainability in [[software architecture]].
 
Typically, an object file can contain three kinds of symbols:
 
* defined "external" symbols, sometimes called "public" or "entry" symbols, which allow it to be called by other modules,