Glossary · Automation software engineering and architecture
Linker
Also known as: Link editor
German: Linker
In software development, a linker is a tool that combines object files produced by a compiler and required libraries into a single executable, library or firmware image, resolving references between them and assigning final memory addresses.
- Software engineering
In one sentence
A linker combines compiled object files and libraries into an executable or firmware image, resolving references and assigning addresses.
Example
The linker script places the firmware's bootloader, application and parameter area at fixed flash addresses so the bootloader can find and verify the application.
How it applies
- Engineering: In embedded development, linker scripts control where code and data are placed in memory, which matters for bootloaders, memory-mapped hardware and memory protection. Linker map files show memory usage and are useful for resource checks.
- Libraries: Static linking copies library code into the executable; dynamic linking loads it at runtime. Dynamic linking saves memory and allows library updates, but requires compatible versions on the target.
- Documentation: Keep linker scripts and map files with each release, because they are needed to analyze crashes and memory issues in the field. Record linker version and options together with the compiler settings.
Linker vs. compiler
The Compiler translates each source file into an object file; the linker joins these into one program. Errors such as 'undefined symbol' come from the linker, not the compiler, which helps locate their cause: a missing library or declaration rather than a syntax error.