Was soll ich tun, wenn die dynamische Linux-Bibliothek nicht gefunden werden kann?

藏色散人
Freigeben: 2020-05-25 10:13:08
Original
3058 Leute haben es durchsucht

Was soll ich tun, wenn die dynamische Linux-Bibliothek nicht gefunden werden kann?

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage