Lösung für den Fehler beim Laden der dynamischen Bibliothek, wenn ein Linux-Programm ausgeführt wird

Lösung für den Fehler beim Laden der dynamischen Bibliothek, wenn ein Linux-Programm ausgeführt wird

Dynamische Bibliothek kann unter Linux nicht geladen werden

Wenn die folgende abnormale Situation auftritt

./test: Fehler beim Laden gemeinsam genutzter Bibliotheken: libmfs_open.so: Gemeinsam genutzte Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Wenn der Pfad der dynamischen Bibliothek (/usr/cluster/.share/lib) ist

Lösung:

Methode 1: Fügen Sie den Pfad zur Datei /etc/ld.so.conf hinzu, vi /etc/ld.so.conf

Fügen Sie den folgenden Inhalt hinzu

include ld.so.conf.d/*.conf

/usr/cluster/.share/lib

Methode 2: Geben Sie im Terminal ein: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/cluster/.share/lib

Methode 3: Ändern Sie die Datei /etc/profile

exportiere MPI_HOME=/usr/cluster

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/.share/lib

Führen Sie source /etc/profile im Terminal aus, damit die Konfigurationsdatei wirksam wird

Lösung für den Fehler beim Laden der dynamischen Bibliothek während der Ausführung des Programms

Die Fehlermeldung lautet:

Fehler beim Laden gemeinsam genutzter Bibliotheken: libjson.so.0: Gemeinsam genutzte Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Im Allgemeinen gibt es dafür zwei Gründe: Einer ist, dass die gemeinsam genutzte Bibliothek (Datei lib*.so.*) nicht im Betriebssystem enthalten ist oder dass die Version der gemeinsam genutzten Bibliothek falsch ist. Die Lösung besteht darin, es erneut herunterzuladen und zu installieren.

Ein weiterer Grund ist, dass die gemeinsam genutzte Bibliothek installiert wurde, aber wenn das Programm ausgeführt wird, das die gemeinsam genutzte Bibliothek aufrufen muss, kann das Programm die gemeinsam genutzte Bibliotheksdatei nicht gemäß dem Standardpfad der gemeinsam genutzten Bibliothek finden. Die Lösung lautet wie folgt:

Wenn die gemeinsam genutzte Bibliotheksdatei im Verzeichnis /lib oder /usr/lib installiert ist, führen Sie den Befehl ldconfig aus.

Der Zweck des Befehls ldconfig besteht darin, in den Standardsuchverzeichnissen (b und /usrb) und den in der Konfigurationsdatei für dynamische Bibliotheken /etc/ld.so.conf aufgeführten Verzeichnissen nach gemeinsam nutzbaren dynamischen Linkbibliotheken (im Format lib*.so*) zu suchen und dann die vom dynamischen Lader (ld.so) benötigten Verbindungs- und Cachedateien zu erstellen. Die Cachedatei ist standardmäßig /etc/ld.so.cache, in der die sortierte Liste der Namen dynamischer Linkbibliotheken gespeichert ist.

Wenn die gemeinsam genutzte Bibliotheksdatei in /usr/local/lib (im Allgemeinen werden gemeinsam genutzte Open Source-Bibliotheken in diesem Verzeichnis installiert) oder in anderen Verzeichnissen als /lib oder /usr/lib installiert ist, müssen Sie vor der Ausführung des Befehls ldconfig auch das neue Verzeichnis der gemeinsam genutzten Bibliothek zur Konfigurationsdatei der gemeinsam genutzten Bibliothek /etc/ld.so.conf hinzufügen, und zwar wie folgt:

# Katze /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib" >> /etc/ld.so.conf
#ldconfig

Oder erstellen Sie eine neue Datei mit der Endung .conf im Verzeichnis /etc/ld.so.conf.d/ und fügen Sie der Datei das Verzeichnis hinzu, in dem sich die Bibliotheksdatei befindet. Führen Sie dann ldconfig aus, um die Datei /etc/ld.so.cache zu aktualisieren.

Wenn die gemeinsam genutzte Bibliotheksdatei in einem anderen Verzeichnis als /lib oder /usr/lib installiert ist, Sie den Pfad zur gemeinsam genutzten Bibliothek jedoch nicht zur Datei /etc/ld.so.conf hinzufügen möchten (oder nicht über die Berechtigung zum Hinzufügen des Pfads verfügen). Sie können eine globale Variable LD_LIBRARY_PATH exportieren. Wenn Sie das Programm dann ausführen, sucht es in einem Verzeichnis nach der gemeinsam genutzten Bibliothek.

LD_LIBRARY_PATH gibt dem Loader an, in welchen Verzeichnissen gemeinsam genutzte Bibliotheken zu finden sind. Sie können mehrere Suchverzeichnisse festlegen, die durch Doppelpunkte getrennt sind. Wenn Sie beispielsweise mysql im Verzeichnis /usr/local/mysql installiert haben und sich viele Bibliotheksdateien unter /usr/local/mysql/lib befinden, können Sie die folgende Anweisung zu .bashrc oder .bash_profile oder Shell hinzufügen:

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

Im Allgemeinen handelt es sich hierbei nur um eine vorübergehende Lösung, die zum Einsatz kommt, wenn keine Berechtigung vorliegt oder ein vorübergehender Bedarf besteht.

Wenn die vom Programm benötigte Bibliotheksdatei niedriger ist als die aktuell im System vorhandene Version der Bibliotheksdatei, kann eine Verknüpfung hergestellt werden. Zum Beispiel:

Fehler beim Laden gemeinsam genutzter Bibliotheken: libncurses.so.4: Gemeinsam genutzte Bibliotheken können nicht geöffnet werden
Objektdatei: Keine solche Datei oder kein solches Verzeichnis
ls /usr/lib/libncu*
/usr/lib/libncurses.a /usr/lib/libncurses.so.5
/usr/lib/libncurses.so /usr/lib/libncurses.so.5.3

Es ist ersichtlich, dass es zwar kein libncurses.so.4 gibt, aber das abwärtskompatible libncurses.so.5.

Erstellen Sie einfach einen Link

ln -s /usr/lib/libncurses.so.5.3 /usr/lib/libncurses.so.4

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Erstellen Sie eine Scala-Umgebung unter Linux und schreiben Sie ein einfaches Scala-Programm
  • Häufige Linux-Fehler bei der chinesischen Übersetzung (Neulinge müssen das wissen)
  • WePY-Cloud-Entwicklungspraxis im Linux-Befehlsabfrage-Applet
  • So rufen Sie ein Verzeichnis/einen Ordner in Linux auf, ohne den CD-Befehl zu verwenden
  • Drei Möglichkeiten, um zu überprüfen, ob ein Port in einem Remote-Linux-System geöffnet ist
  • Detailliertes Linux-Installationstutorial
  • Detaillierte Anweisungen zur Installation von Swoole aus dem Quellcodepaket unter Linux und grundlegende Verwendungsvorgänge
  • Detaillierte Erklärung der Verwendung des chmod-Befehls in Linux
  • Erläuterung verschiedener Möglichkeiten zum Ausführen von Tomcat unter Linux
  • So installieren Sie die Standalone-Version von Spark in einer Linux-Umgebung ohne Verwendung von Hadoop

<<:  jQuery-Plugin zum Erzielen eines Code-Rain-Effekts

>>:  jQuery-Plugin zum Implementieren eines schwebenden Menüs

Artikel empfehlen

MySQL-Einfügungsproblem bei JSON

MySQL 5.7.8 und höher unterstützt nun einen nativ...

So verwenden Sie die Markdown-Editor-Komponente in Vue3

Inhaltsverzeichnis Installieren Komponenten impor...

Tomcat erhält den Clientdomänennamen des Nginx-Reverse-Proxys

Frage Nach dem Nginx-Reverse-Proxy erhält die Tom...

Analyse des Ereignisschleifenmechanismus von js

Vorwort Wie wir alle wissen, ist JavaScript im Ke...

Sechs Möglichkeiten zur Steigerung der Geschwindigkeit Ihrer Website

1. Ersetzen Sie die Adresse Ihrer .js-Bibliotheks...

Unterschiede zwischen ES6-Vererbung und ES5-Vererbung in js

Inhaltsverzeichnis Nachlass ES5-Prototypvererbung...

So starten/stoppen Sie den Tomcat-Server in Java

1. Projektstruktur 2. Rufen Sie Tomcat.java auf P...

React realisiert den gesamten Prozess des Seitenwasserzeicheneffekts

Inhaltsverzeichnis Vorwort 1. Anwendungsbeispiele...