The linker combines a number of object and archive files, relocates their data and ties up symbol references. It is usually the last step in a compilation.
The linker accepts Linker Command Language files written in a superset of AT&T's Link Editor Command Language syntax, to provide explicit and total control over the linking process.
The linker uses the general-purpose BFD libraries to operate on object files. This allows the linker to read, combine, and write object files in many different formats—for example, COFF or Intel Hex. Different formats may be linked together to produce any available kind of object file. See Appendix A, for more information.
Aside from its flexibility, the linker is more helpful than other linkers in providing diagnostic information. Many linkers abandon execution immediately upon encountering an error; whenever possible, the linker continues executing, allowing you to identify other errors (or, in some cases, to get an output file in spite of the error).