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

Detaillierte Beschreibung des Anwendungsszenarios für Javascript-Closure

Inhaltsverzeichnis 1. Abschluss 2. Szenarien für ...

So löschen Sie eine Eigenschaft eines Objekts in JavaScript

1. löschen delete ist die einzige wirkliche Mögli...

Spezifische Verwendung der Schnittstelle wx.getUserProfile im Applet

Kürzlich hat das WeChat Mini-Programm Anpassungen...

js fügt dynamisch Beispielcode für eine Liste eingekreister Zahlen hinzu

1. Fügen Sie zuerst das ul-Tag im Textkörper hinz...

So verwenden Sie @media in mobilen adaptiven Stilen

Allgemeiner Handy-Stil: @media alle und (Ausricht...

So erfassen Sie Ausnahmen in React

Inhaltsverzeichnis Vorwort Fehlergrenze Jenseits ...

Zusammenfassung gängiger SQL-Anweisungen in MySQL

1. MySQL-Exportdatei: SELECT `pe2e_user_to_compan...

Detaillierte Erklärung zur Verwendung von Bussen in Vue

Vue-Busmechanismus (Bus) Zusätzlich zur Verwendun...

Probleme und Lösungen beim Verbinden des Knotens mit der MySQL-Datenbank

Ich habe heute eine neue Version von MySQL (8.0.2...

Eine Lösung für einen Fehler in IE6 mit jquery-multiselect

Bei der Verwendung von jquery-multiselect (einem ...

Neue Ideen zur Zeitformatierung in JavaScript toLocaleString()

Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...

Beispiel für die Implementierung von QR-Code-Scaneffekten mit CSS3

Online-Vorschau https://jsrun.pro/AafKp/ Erster B...

So dekomprimieren Sie mehrere Dateien mit dem Befehl „unzip“ in Linux

Lösung für das Problem, dass in Linux kein Entpac...