Softwareentwicklung: Wie Sie mit dem richtigen Linker Zeit sparen

Unter Linux stehen mehrere Linker zur Auswahl. Sie unterscheiden sich nicht nur in ihren Funktionen, sondern auch bei Speicherverbrauch und Performance.

Lesezeit: 16 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 3 Beiträge
Von
  • Dr. Christoph Erhardt
Inhaltsverzeichnis
Mehr zu Softwareentwicklung:

Unter Linux stehen verschiedene Linker zu Auswahl. Linker können Module zusammenfügen, Sektionen verschmelzen, Symbolbezüge auflösen und dynamische Programmbibliotheken zur Laufzeit ladbar machen. Doch das ist nicht alles: Sie verfügen über erweiterte Features wie Symbolversionierung, Identical COMDAT Folding, inkrementelles Linken, Skripting und Linkzeitoptimierung.

Dr. Christoph Erhardt

Dr. Christoph Erhardt entwickelt als Senior Software Engineer bei Method Park by UL Softwareplattformen für Medizingeräte. Er steuert Patches zum mold-Linker bei und betreut das mold-Paket als Maintainer für Fedora Linux.

Die Symbolversionierung ermöglicht es in einer Bibliothek, mehrere Versionen desselben Symbols bereitzustellen, zum Beispiel eine ältere und eine neue inkompatible Implementierung einer Funktion. Wer die Bibliothek nutzt, kann dem Linker mitteilen, welche Version des Symbols er einbinden soll. Das führt dazu, dass Legacy-Software unmodifiziert auch mit neueren Releases der Bibliothek lauffähig bleibt. Ein versioniertes Symbol hat als Suffix einen durch das @-Zeichen abgetrennten Versionsbezeichner, die Standardversion wird durch @@ markiert. Die glibc nutzt Symbolversionierung exzessiv und definiert beispielsweise glob@GLIBC_2.2.5 und glob@@GLIBC_2.27, die sich in Bezug auf Symlinks unterschiedlich verhalten.

Identical COMDAT Folding (ICF) ist eine Optimierung, die mehrfach vorkommende nur lesbare Sektionen mit identischem Inhalt (Code oder Daten) dedupliziert. Das spart Speicherplatz, macht das Programm aber auch schlechter debugbar, weil deduplizierte Symbole nicht mehr eindeutig zuordenbar sind. Implementiert wird ICF in der Regel als heuristischer Löser für eine Art Graphisomorphieproblem.