StudySmarter - Die all-in-one Lernapp.
4.8 • +11k Ratings
Mehr als 5 Millionen Downloads
Free
Americas
Europe
In der Informatik sind Linker ein unverzichtbares Werkzeug. Dieser Artikel stellt eine detaillierte Untersuchung des Themas bereit und führt dich von der grundlegenden Definition über die Funktionsweise bis hin zu erweiterten Anwendungsfällen von Linkern in der Programmierung. Ob du ein Profi oder ein Anfänger bist, du wirst eine tiefe und klare Einsicht in die Bedeutung, den Einsatz und die tiefergehende…
Entdecke über 200 Millionen kostenlose Materialien in unserer App
Speicher die Erklärung jetzt ab und lies sie, wenn Du Zeit hast.
SpeichernLerne mit deinen Freunden und bleibe auf dem richtigen Kurs mit deinen persönlichen Lernstatistiken
Jetzt kostenlos anmeldenIn der Informatik sind Linker ein unverzichtbares Werkzeug. Dieser Artikel stellt eine detaillierte Untersuchung des Themas bereit und führt dich von der grundlegenden Definition über die Funktionsweise bis hin zu erweiterten Anwendungsfällen von Linkern in der Programmierung. Ob du ein Profi oder ein Anfänger bist, du wirst eine tiefe und klare Einsicht in die Bedeutung, den Einsatz und die tiefergehende Rolle von Linkern in komplexen Programmen gewinnen. Einfach erklärt, unterstützt mit informativen Beispielen und in verschiedenen Programmiersprachen präsentiert, fokussiert der Artikel auf deinen Lernerfolg im Bereich der Linker Informatik.
In der Informatik ist ein Linker ein Programm, das aus diversen Objektdateien ein eigenständiges Programm oder eine Bibliothek erstellt.
Ein Linker ist ein Tool, das verschiedene Objektmodule (die das Ergebnis eines Kompiliervorgangs sind) zusammenbringt und alle unbestimmten Referenzen löst.
Beispiel: Stell dir vor, du schreibst ein komplexes Softwareprogramm. Anstatt den gesamten Code in eine einzige Datei zu schreiben, könntest du ihn in verschiedene Module aufteilen, jedes mit seinen eigenen Funktionen und Aufgaben. Dann könntest du diese Module unabhängig voneinander kompilieren. Am Ende kommt der Linker ins Spiel und vereint alle diese unabhängigen Module zu einem einzigen, lauffähigen Programm.
Tatsächlich ist das Konzept der Bibliotheken ohne die Existenz eines Linkers nicht denkbar. Bibliotheken sind Sammlungen von vorgefertigtem Code, die Entwickler in ihren Programmen verwenden können, ohne die Details des Codes kennen zu müssen. Der Linker ist das Tool, das erlaubt, diesen Bibliothekscode mit dem eigenentwickelten Code zu verknüpfen und ein vollständiges, lauffähiges Programm zu erstellen.
// file1.c file extern int variable; // In file1.c, variable is undefined void function1() { variable = 5; } // uses variable // file2.c file #includeIn diesem kleinen Beispiel repräsentiert jeder .c-File ein Modul. Die Variable "variable" ist in file1.c undefiniert (extern deklariert), aber in file2.c definiert. Der Linker erkennt das und verknüpft die Referenz auf "variable" in file1.c mit der Definition von "variable" in file2.c.int variable; // In file2.c, variable is defined void function2(); int main() { function2(); printf("%d", variable); return 0; }
$ gcc -c file1.c // kompiliert file1.c, erzeugt file1.o $ gcc -c file2.c // kompiliert file2.c, erzeugt file2.o $ gcc -o executable file1.o file2.o // linkt file1.o und file2.o, erzeugt executable $ ./executable // führt die kompilierte und gelinkte Anwendung ausIn diesem Beispiel sind die ersten beiden Zeilen die Kompilierungsphase, die .o-Objektfiles für file1.c und file2.c erzeugt. Die dritte Zeile ist der eigentliche Linking-Step, bei dem die beiden .o-Objektfiles in eine ausführbare Datei umgewandelt wird. Die letzte Zeile führt das vervollständigte Programm aus. Zusammenfassend kann festgehalten werden: Linker sind ein essenzielles Hilfsmittel in der Softwareentwicklung und ihr Verständnis bringt jeden angehenden Entwickler ein Stück weiter. Mit ihrer Hilfe wird der Entwicklungsprozess von großen Softwaresystemen übersichtlich und vor allem möglich.
// main.c extern void printHello(); extern void printWorld(); int main() { printHello(); printWorld(); return 0; }Die Dateien printHello.c und printWorld.c sehen beispielsweise folgendermaßen aus:
// printHello.c #includevoid printHello() { printf("Hello"); }
// printWorld.c #includeHier ruft main.c die externen Funktionen "printHello" und "printWorld" auf, die in den anderen beiden Dateien definiert wurden. Wenn nun jede dieser Dateien einzeln kompiliert wird, entstehen drei Objektdateien: main.o, printHello.o und printWorld.o. Jede dieser Dateien beinhaltet den Maschinencode für das jeweilige Modul, kann aber nicht alleine ausgeführt werden, da die Referenzen auf die externen Funktionen noch nicht aufgelöst sind. Der Linker übernimmt nun die Aufgabe, alle Objektdateien zusammenzuführen und die externen Referenzen zu lösen. Durch die Verknüpfung der Module findet die korrekte Adresszuweisung statt und die resultierende Datei kann erfolgreich ausgeführt werden.void printWorld() { printf(" World!\n"); }
Wie möchtest du den Inhalt lernen?
Wie möchtest du den Inhalt lernen?
Kostenloser informatik Spickzettel
Alles was du zu . wissen musst. Perfekt zusammengefasst, sodass du es dir leicht merken kannst!
Sei rechtzeitig vorbereitet für deine Prüfungen.
Teste dein Wissen mit spielerischen Quizzes.
Erstelle und finde Karteikarten in Rekordzeit.
Erstelle die schönsten Notizen schneller als je zuvor.
Hab all deine Lermaterialien an einem Ort.
Lade unzählige Dokumente hoch und habe sie immer dabei.
Kenne deine Schwächen und Stärken.
Ziele Setze dir individuelle Ziele und sammle Punkte.
Nie wieder prokrastinieren mit unseren Lernerinnerungen.
Sammle Punkte und erreiche neue Levels beim Lernen.
Lass dir Karteikarten automatisch erstellen.
Erstelle die schönsten Lernmaterialien mit unseren Vorlagen.
Melde dich an für Notizen & Bearbeitung. 100% for free.
Speichere Erklärungen in deinem persönlichen Bereich und greife jederzeit und überall auf sie zu!
Mit E-Mail registrieren Mit Apple registrierenDurch deine Registrierung stimmst du den AGBs und der Datenschutzerklärung von StudySmarter zu.
Du hast schon einen Account? Anmelden