2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Der Linker spielt eine wichtige Rolle bei der Programmentwicklung. Er ist für die Integration mehrerer Objektdateien und Bibliotheksdateien in eine ausführbare Datei verantwortlich. Bevor wir uns mit der Funktionsweise des Linkers, dem Unterschied zwischen statischem Linken und dynamischem Linken und der Erstellung und Verwendung dynamischer Linkbibliotheken befassen, wollen wir zunächst die Grundfunktionen des Linkers skizzieren.
Linker Es handelt sich um ein Tool, das für die Kombination einer oder mehrerer Objektdateien und Bibliotheksdateien zu einer ausführbaren Datei verantwortlich ist. Zu seinen Hauptfunktionen gehören:
Symbolanalyse : Identifizieren und verarbeiten Sie alle Symbole (Namen von Funktionen und Variablen) im Programm und stellen Sie sicher, dass jedes Symbol eine eindeutige Definition hat. Für Symbole, auf die verwiesen, aber nicht definiert wird (externe Symbole), sucht der Linker nach einer Definition in einer bereitgestellten Bibliothek oder einer anderen Objektdatei.
zurücksetzen : Passen Sie die Code- und Datenadressen in jedem Modul an die endgültige Speicheradresse an. Die Verlagerung umfasst eine Adresskorrektur im Code und eine Positionsanpassung des Datensegments, um sicherzustellen, dass alle Referenzen auf den richtigen Speicherort verweisen.
Segmente zusammenführen: Segmente desselben Typs (z. B. Codesegmente, Datensegmente usw.) aus verschiedenen Zieldateien zu einem fortlaufenden Segment zusammenführen.
Verarbeitungsbibliothek : Verknüpfen Sie den vom Programm benötigten Bibliothekscode mit der Objektdatei. Der Linker kann zwei Arten von Bibliotheken verarbeiten: statische Bibliotheken und dynamische Bibliotheken.
Ausführbare Datei generieren: Die endgültige Ausgabe ist eine ausführbare Datei, die auf dem Betriebssystem ausgeführt werden kann.
Statische Verknüpfung UndDynamische Verknüpfung Es handelt sich um zwei Arbeitsmodi des Linkers mit jeweils unterschiedlichen Eigenschaften und Verwendungsszenarien.
Konzept : Bei der statischen Verknüpfung wird der Bibliothekscode zur Kompilierungszeit kopiert und in jede ausführbare Datei eingebettet, die ihn verwendet. Auf diese Weise enthält die generierte ausführbare Datei den gesamten erforderlichen Code und ist nicht auf externe Bibliotheksdateien angewiesen.
Vorteil:
Mangel:
Statische Bibliothekserweiterung:
.lib
.a
Konzept : Bei der dynamischen Verknüpfung wird der Bibliothekscode zur Laufzeit geladen und nicht in die ausführbare Datei eingebettet. Die ausführbare Datei enthält nur Verweise auf Bibliotheken und der Bibliothekscode wird zur Laufzeit vom Betriebssystem geladen.
Vorteil:
Mangel:
Dynamische Bibliothekserweiterung:
.dll
(Dynamische Link Bibliothek).so
(Gemeinsames Objekt)Auf verschiedenen Betriebssystemen unterscheiden sich die Methoden zum Erstellen dynamischer Linkbibliotheken geringfügig. Hier sind einige allgemeine Schritte und Befehle:
Schreiben Sie Bibliothekscode:
Erstellen Sie eine C-Quelldatei mit den Funktionen, die wir in der dynamischen Bibliothek platzieren möchten.
// example.cpp
#include