iX 12/2022
S. 112
Wissen
Softwareentwicklung

Ohne Linker kein Programm

Linker sind für die Entwicklung nativer Anwendungen ein unverzichtbares Werkzeug. Sie fügen nicht nur einzelne Programmmodule zu einer ausführbaren Binärdatei zusammen, sondern können Speicherplatz und Zeit sparen.

Von Dr. Christoph Erhardt

Wäre die Werkzeugkette der Softwareentwicklung eine Rockband, dann wäre der Compiler ihr Frontmann: berühmt, berüchtigt und in aller Munde. Dem Linker fiele eher die Rolle des Bassisten zu: unauffällig bis unsichtbar und nur einschlägig Interessierten namentlich bekannt. Das geht so weit, dass manche sich fragen, ob der Linker mehr als ein arkanes Relikt aus grauer Vorzeit ist und ob außerhalb des althergebrachten C-/C++-Ökosystems überhaupt ein Linker zum Einsatz kommt. Die Antwort ist ein klares Ja. Egal, ob man Code in C++, Go, Rust oder Haskell schreibt: Wann immer am Ende des Bauvorgangs eine nativ ausführbare Binärdatei herauspurzelt, wurde sie durch einen Linker erzeugt.

Der erste Teil der Artikelreihe beleuchtet die technischen Grundlagen des Linkens und beschreibt, was unter der Haube passiert. Der technische Fokus liegt auf der Verarbeitung von ELF-Programmen (Executable and Linking Format) unter Linux; die Konzepte sind aber genauso auf andere gängige Binärformate wie PE (Windows) oder Mach-O (macOS, iOS) anwendbar. Der zweite Teil in einer der nächsten iX-Ausgaben wird sich mit der Praxis befassen und zeigen, welche Features ein moderner Linker beherrscht und welche Linker es im Open-Source-Umfeld gibt. Wer auf den richtigen Linker setzt, kann damit zeitkritische Teile des Bauprozesses um ein Vielfaches beschleunigen.

Kommentieren