# About the ARM linker

The ARM linker, armlink, accepts as input:

- one or more separately compiled or assembled object files written in ARM Object Format (see ARM object format for a synopsis, and ARM Object Format for details);

- optionally, one or more object libraries in ARM Object Library Format (see ARM Object Format for full details).

The ARM linker performs the following functions:

- resolves symbolic references between object files;

- extracts from object libraries the object modules needed to satisfy otherwise unsatisfied symbolic references;

- sorts object fragments (AOF areas) according to their attributes and names, and consolidates similarly attributed and named fragments into contiguous chunks. (See the Area placement and sorting rules for details);

- relocates (possibly partially) relocatable values;

- generates an output image possibly comprising several files (or a partially linked object file instead).

The ARM linker can produce output in any of the following formats:

- ARM Object Format t(see ARM object format for a synopsis, and ARM Object Format for details;

- Plain binary format, relocated to a fixed address, (see the section Plain binary format for details);

- ARM Image Format, (see ARM image format for a synopsis and ARM Image Format for details);

- Extended Intellec Hex Format, suitable for driving the Compass integrated circuit design tools, (see section Extended intellec hex Format (IHF) for details);

- ARM Shared Library Format: a read-only position-independent reentrant sharable code segment (or shared library), written as a plain binary file, together with a stub containing read-write data, entry veneers, etc., written in ARM Object Format. (See the section ARM shared library format for details);

- ARM Overlay Format: a root segment written in ARM Image Format, together with a collection of overlay segments, each written as a plain binary file. A system of overlays may be static (each segment bound to a fixed address at link time), or dynamic (each segment may be relocated when it is loaded).