1. Getting started

1.1. About the linker

Linking is the process of collecting and combining various pieces of code and data into a single file that can be loaded (copied) into memory and executed. Linking is performed automatically by programs called linkers, which enable separate compilation.

1.2. Source

eld is available in the git repository:

Note

git clone git://github.com/qualcomm/eld

1.3. Summary of the linker features

  • Most important features supported by GNU Linker
    • Development going on to add additional support

  • LTO
    • Supports ThinLTO

    • Supports Full LTO

    • Supports Both flavors of LTO with linker scripts

  • Supports Version scripts
    • Supports extensive usage of Linker scripts

  • Better Diagnostics
    • YAML Map Files

    • Easier to read Text Map files

  • Support for Linker Plugins

  • –reproduce flag to easily reproduce the linking step.

1.4. What the linker can accept as input

Following type of files can be used as input to ld.eld.

  • Object files

  • Static Libraries

  • Shared Libraries

  • Symbol definition file

  • Extern list

1.5. What the linker outputs

  • ELF File

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

  • Map file
    • YAML Map

    • Text Map

  • Tar file
    • when using –reproduce flag