Was soll ich tun, wenn die dynamische Linux-Bibliothek nicht gefunden werden kann?
Lösen Sie das Problem, dass Linux die dynamische Bibliothek nicht finden kann
Dynamische Bibliotheken sind gemeinsam genutzte Bibliotheken, wenn es um das Problem geht, dass Linux die dynamische Bibliothek nicht finden kann , müssen Sie zunächst die Funktionen dynamischer Bibliotheken verstehen:
Empfohlen: „Linux-Tutorial“
● Dynamische Bibliotheken verzögern das Laden von Links einiger Bibliotheksfunktionen zur Programmlaufzeit.
● Kann die gemeinsame Nutzung von Ressourcen zwischen Prozessen realisieren. (Daher werden dynamische Bibliotheken auch als gemeinsam genutzte Bibliotheken bezeichnet)
● Erleichtern Sie die Aktualisierung einiger Programme.
● Auch das Laden der Links kann vollständig vom Programmierer im Programmcode gesteuert werden (expliziter Aufruf).
Wie aus dem ersten Punkt oben ersichtlich ist, packt die dynamische Bibliothek die Bibliotheksdateien nicht wie die statische Bibliothek in binärer Form in das Programm, sondern führt das Programm dynamisch aus, wenn es die entsprechende Bibliotheksfunktion aufrufen muss . Laden Sie die dynamische Bibliothek. Zu diesem Zeitpunkt kennt das System nur den Namen der dynamischen Bibliothek. Zu diesem Zeitpunkt ist der dynamische Linker/Loader des Systems erforderlich Programm, es wird von ld-linux.so verwendet. Zum Abschluss durchsucht es nacheinander den Abschnitt DT_RPATH der Elf-Datei (nicht kontrollierbar) => Umgebungsvariable LD_LIBRARY_PATH => /etc/ld.so.cache Dateiliste => /lib/ und /usr/lib-Verzeichnisse, um die Bibliotheksdatei zu finden und in den Speicher zu laden.
Dann müssen wir den absoluten Pfad des Verzeichnisses, in dem sich die dynamische Bibliothek befindet, zu einer beliebigen Sequenz der dynamischen Loader-Suchsequenz hinzufügen:
Methode 1: Kopieren Es wird nicht empfohlen, eigene gemeinsam genutzte Bibliotheken nach /lib oder /usr/lib zu erstellen
Methode 2: Fügen Sie den absoluten Pfad des Verzeichnisses, in dem sich die dynamische Bibliothek befindet, zur Systemumgebungsvariablen hinzu
2.1. Fügen Sie die dynamische Bibliothek hinzu. Der absolute Pfad des Verzeichnisses wird vorübergehend zur Umgebungsvariablen hinzugefügt (er wird ungültig, wenn das Terminal geschlossen wird).
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
2.2. Legen Sie den absoluten Pfad des Verzeichnisses fest wo sich die dynamische Bibliothek befindet: ~/.bashrc oder /etc/profile (dauerhaft wirksam)
Benutzerebene: Hängen Sie den Bibliothekspfad an das Ende der ~/.bashrc-Datei an
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
source ~/.bashrc oder . ~/.bashrc, um die Konfiguration wirksam zu machen
Systemebene: Bibliothekspfad an das Ende der Datei /etc/profile anhängen
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
source /etc/profile oder ./etc/profile, um die Konfiguration wirksam zu machen
Methode 3: Fügen Sie den absoluten Pfad des Verzeichnisses, in dem sich die dynamische Bibliothek befindet, zur Datei /etc/ld.so.cache hinzu (2-stufige Implementierung)
Bearbeiten Sie die Datei /etc/ld.so.conf und fügen Sie den Pfad zu dem Verzeichnis hinzu, in dem sich die Bibliotheksdatei befindet.
Führen Sie ldconfig aus (erfordert Superuser-Berechtigungen). Dieser Befehl erstellt / neu. etc/ld.so.cache-Datei
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die dynamische Linux-Bibliothek nicht gefunden werden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!