You copied the Doc URL to your clipboard.

About the linker

The linker, armlink, combines the contents of one or more object files with selected parts of one or more object libraries to produce:

  • An ARM ELF image.

  • A partially linked ELF object that can be used as input in a subsequent link step.

  • ELF files that can be demand-paged efficiently.

  • A shared object, compatible with the Base Platform Application Binary Interface (BPABI) or a BPABI executable file.

The linker can:

  • Link A32 code and T32 code.

  • Link A64 code.

  • Generate interworking veneers to switch between A32 and T32 states when required.

  • Generate inline veneers or long branch veneers, where required, to extend the range of branch instructions.

  • Automatically select the appropriate standard C or C++ library variants to link with, based on the build attributes of the objects it is linking.

  • Enable you to specify the locations of code and data within the system memory map, using either a command-line option or a scatter file.

  • Perform Read/Write data compression to minimize ROM size.

  • Perform unused section elimination to reduce the size of your output image.

  • Control the generation of debug information in the output file.

  • Generate a static callgraph and list the stack usage.

  • Control the contents of the symbol table in output images.

  • Show the sizes of code and data in the output.

  • Accept GNU ld scripts when linking code for AArch32 state, with restrictions.