Linker (Computerprogramm)

Linker (Computerprogramm)

Unter einem Linker oder Binder (auch: „Bindelader“) versteht man ein Computerprogramm, das einzelne Programmmodule zu einem ausführbaren Programm zusammenstellt (verbindet). Auf IBM-Großrechnersystemen wird der Linker linkage editor (englisch) genannt.[1]

Die meisten Programme enthalten Bestandteile oder Module, die in anderen Programmen Verwendung finden können. Mehrere kompilierte Module mit Funktionen (so genannte Objektdateien) können zu Funktionsbibliotheken (Programmbibliotheken) zusammengefasst werden. Der Code wird vom Linker zum Hauptprogramm hinzugefügt, falls die entsprechende Funktion benötigt wird.

Um ein Programmmodul in einem anderen Programm verwenden zu können, müssen die symbolischen Adressen der Funktionen und Variablen des Moduls in Speicheradressen umgewandelt werden. Diese Aufgabe übernimmt der Linker. Der Linkvorgang erfolgt nach der Kompilierung und ist meistens der letzte Arbeitsschritt zur Erstellung eines Programms. Man unterscheidet generell zwischen statischem und dynamischem Linken.

Inhaltsverzeichnis

Statisches Linken

Das statische Linken ist ein Vorgang, der typischerweise während der Entwicklung des Programms erfolgt, nachdem der Benutzer ein fertig zusammengesetztes Programm erhält. Dies besteht bei vollständig statisch gelinkten Programmen aus einer einzigen Datei.

Modernere Versionen aktueller C-Bibliotheken unter Unix-artigen Betriebssystemen unterstützen statisches Linken oft nicht mehr vollständig. So erzwingt beispielsweise die glibc ein dynamisches Linken bei Modulen, die die Benutzerauthentifizierung betreffen. Programme, die diese Module verwenden, sind immer auf die Anwesenheit einer passenden „Laufzeitversion“ der glibc angewiesen.

Dynamisches Linken

Es ist auch möglich, das Auflösen der Funktions- und Variablennamen zu verschieben, bis das Programm tatsächlich ausgeführt wird. In diesem Fall spricht man von dynamically linked library (DLL) oder shared library. Dies hat den Vorteil, dass die Bibliothek nachträglich leicht ausgetauscht werden kann, die Programme kleiner werden, und dass der Speicher nur einmal benötigt wird, wenn mehrere Programme dieselbe Bibliothek verwenden. Der Nachteil besteht darin, dass sichergestellt werden muss, dass die richtige DLL in der richtigen Version installiert ist. Zum Teil kann das Linken zur Laufzeit des Programmes erfolgen.

Mischformen der statischen und dynamischen Link-Art sind der Normalfall. Bei solchen Programmdateien findet der Linkvorgang praktisch zweimal statt: Einmal durch den Entwickler, und ein zweites Mal – unsichtbar – beim Anwender während der Ausführung. Im Regelfall werden die Namen der benötigten externen Bibliotheken beim ersten Linkvorgang fest einkodiert; es ist aber auch möglich, dass das Programm nach Überprüfung der vorhandenen Bibliotheken während der Laufzeit wahlweise einzelne nachlädt oder auch nicht. Solche nachgeladenen Bibliotheken werden oft als Plug-ins bezeichnet.

Namenskonflikte

Bei dem Vorgang des Linkens entsteht ein einziger großer, nicht-hierarchischer, gemeinsamer Namensraum. Dadurch kommt es bei großen oder sehr verzweigten Projekten oft zu Namenskonflikten. Für diese Fälle sind weak links üblich, bei denen die Linkreihenfolge entscheidet, welches Modul wo verwendet wird. Programmiersprachen wie z. B. C++ lösen das Problem dadurch, dass Modulinhalte über hierarchisch aufgebaute Namen angesprochen werden. Ungelöst bleibt damit jedoch beispielsweise das Problem der Anwesenheit einer Bibliothek in verschiedenen Versionen; das Problem ist zum Zeitpunkt des Linkens nur dadurch lösbar, dass dem Linker je nach benötigter Bibliothek unterschiedliche Suchpfade mitgegeben werden; jede der in Frage kommenden Bibliotheken unterscheidet sich zwar von der Bezeichnung her, ist aber inhaltlich für einen Linker ununterscheidbar, da in ihr die gleichen Symbole vorhanden sind. Nach dem ersten, statischen Linken ist die Angelegenheit dagegen unproblematisch, da sich die verwendete Bibliothek von da an anhand ihres Namens aufrufen lässt.

Einzelnachweise

  1. IBM Corporation (Hrsg.): Operating System 360, Linkage Editor, Program Logic Manual. New York 1967.

Literatur


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Linker — steht für: Linker (Computerprogramm), ein Computerprogramm, das einzelne Programmmodule zu einem ausführbaren Programm zusammenstellt eine inflationsindexierte Anleihe, siehe Inflation Linked Bond ein Mitglied der politischen Linken, siehe… …   Deutsch Wikipedia

  • Trojanisches Pferd (Computerprogramm) — Als Trojanisches Pferd (englisch Trojan Horse), auch kurz im EDV Jargon Trojaner[Anm.] genannt, bezeichnet man ein Computerprogramm, das als nützliche Anwendung getarnt ist, im Hintergrund aber ohne Wissen des Anwenders eine andere Funktion… …   Deutsch Wikipedia

  • Make — (engl. machen, erstellen) ist ein Computerprogramm, das Shellskript ähnlich Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich bei der Softwareentwicklung eingesetzt. Genutzt wird es beispielsweise, um in einem Projekt, das …   Deutsch Wikipedia

  • Makefile — make (engl. machen, erstellen) ist ein Computerprogramm, das Shellskript ähnlich Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich bei der Softwareentwicklung eingesetzt. Genutzt wird es beispielsweise, um in einem Projekt …   Deutsch Wikipedia

  • Bibliothek (Programmierung) — Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Programmfunktionen für zusammengehörende Aufgaben. Bibliotheken sind im Unterschied zu Programmen keine eigenständig lauffähigen Einheiten, sondern Hilfsmodule, die… …   Deutsch Wikipedia

  • Bibliotheksfunktion — Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Programmfunktionen für zusammengehörende Aufgaben. Bibliotheken sind im Unterschied zu Programmen keine eigenständig lauffähigen Einheiten, sondern Hilfsmodule, die… …   Deutsch Wikipedia

  • Bindelader — Unter Linker versteht man ein Computerprogramm; siehe Linker (Computerprogramm) eine inflationsindexierte Anleihe; siehe Inflation Linked Bond ein Mitglied der politischen Linken ein Mitglied der politischen Partei Die Linke den Familiennamen von …   Deutsch Wikipedia

  • Dynamische Bibliothek — Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Programmfunktionen für zusammengehörende Aufgaben. Bibliotheken sind im Unterschied zu Programmen keine eigenständig lauffähigen Einheiten, sondern Hilfsmodule, die… …   Deutsch Wikipedia

  • Funktionsbibliothek — Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Programmfunktionen für zusammengehörende Aufgaben. Bibliotheken sind im Unterschied zu Programmen keine eigenständig lauffähigen Einheiten, sondern Hilfsmodule, die… …   Deutsch Wikipedia

  • Libraries — Eine Programmbibliothek bezeichnet in der Programmierung eine Sammlung von Programmfunktionen für zusammengehörende Aufgaben. Bibliotheken sind im Unterschied zu Programmen keine eigenständig lauffähigen Einheiten, sondern Hilfsmodule, die… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”