ld—The GNU linker
ld [ –o.I output ] .I objfile . . . .br .RB [“–A output ] objfile … [–A architecture ][–b\ input-format ][–Bstatic ][–c\ commandfile ][ –d|–dc|–dp ][ –defsym\ symbol = expression ][–e\ entry ][–F ][–F\ format ][–format\ input-format ][–g ][–G size ][–help ][–i ][–l ar ][–L searchdir ][–M][–Map mapfile ][–m emulation ][–n|–N][–noinhibit-exec ][–oformat\ output-format ][–R\ filename ][–relax ][ –r|–Ur][–S ][–s ][–sort–common][–T\ commandfile ][–Ttext\textorg ][–Tdata\ dataorg ][–Tbss\ bssorg ][–t ][–u\ sym ][–V ][–v][–verbose ][–version ][–warn–common][–warn–once][–X ] [ –x ]
ld combines a number of object and archive files, relocates their data, and ties up symbol references. Often the last step in building a new compiled program to run is a call to ld.
ld accepts Linker Command Language files to provide explicit and total control over the linking process. This man page does not describe the command language; see the ld entry in info, or the manual Ld: The GNU Linker, for full details on the command language and on other aspects of the GNU linker.
This version of ld uses the general-purpose BFD libraries to operate on object files. This allows ld to read, combine, and write object files in many different formats, for example, COFF or a.out. Different formats may be linked together to produce any available kind of object file. You can use objdump –i to get a list of formats supported on various architectures.
Aside from its flexibility, the GNU linker is more helpful than other linkers in providing diagnostic information. Many linkers abandon execution immediately upon encountering an error; whenever possible, ld continues executing, allowing you to identify other errors (or, in some cases, to get an output file in spite of the error).
The GNU linker ld is meant to cover a broad range of situations, and to be as compatible as possible with other linkers. As a result, you have many choices to control its behavior through the command line, and through environment variables.