Symbols can be categorized as local or global. See Symbol Visibility.
During input file processing, local symbols are copied from any input relocatable object files to the output object being built, without examination.
The global symbols from all input relocatable objects, and the global symbols from any external dependencies, are analyzed and combined in a process known as symbol resolution. The link-editor places each symbol in an internal symbol table in the order that the symbols are encountered. If a symbol with the same name was contributed by an earlier object, and already exists in the symbol table, the symbol resolution process determines which of the two symbols to keep. As a side effect of this process, the link-editor determines how to establish references to external object dependencies.
On successful completion of input file processing, the link-editor applies any symbol visibility adjustment, and determines if any unresolved symbol references remain. If any fatal symbol resolution errors have occurred, or if any unresolved symbol references remain, the link-edit terminates. Finally, the link-editor's internal symbol table is added to the symbol tables of the image being created.
The following sections expand upon symbol visibilities, symbol resolution, and undefined symbol processing.