Wofür wird ld_library_path verwendet??

Wofür wird ld_library_path verwendet??
Bevor Sie den Pfad LD_Library kennen, sollten Sie das Konzept der Umgebungsvariablen haben. Aber wenn Sie nicht wissen, machen Sie sich keine Sorgen, ich werde erklären, was es ist. Die Variablen, deren Wert durch Betriebssystem oder Microservice -Funktionen bestimmt wird, werden als Umgebungsvariablen bezeichnet. Eine Umgebungsvariable ist ein dynamisch bezeichneter Wert, der beeinflussen kann, wie sich das Ausführen von Computerprozessen verhalten. Der Prozess wird in der Komponente der Umgebung des Prozesses ausgeführt.

Erstens wurden Umgebungsvariablen für UNIX entwickelt, aber jetzt haben Windows und Linux diese Variablen auch. Wenn ein Prozess erstellt wird, erbt es eine Kopie der Laufzeitumgebung seines Elternteils, mit Ausnahme der expliziten Änderungen des übergeordneten, wenn das Kind standardmäßig erstellt wird. Ein Name/Wert -Wertpaar besteht aus einer Umgebungsvariablen, und eine beliebige Anzahl von ihnen kann jederzeit generiert und verwiesen werden. Bei der Benennung von Umgebungsvariablen werden häufig obere Fallbuchstaben verwendet. Dies hilft, Umgebungsvariablen von anderen Arten von Namen im Programmiercode im Allgemeinen zu unterscheiden.Im UNIX -Betriebssystem sind Umgebungsvariablen Fallempfindlichkeit, jedoch nicht auf DOS, OS/2 oder Windows.

Ld_library ist auch eine Umgebungsvariable des UNIX/Linux -Betriebssystems. In diesem Artikel werden wir diese Umgebungsvariable im Detail diskutieren.

Verwendung der Variablen ld_library_path

Im Unix/Linux -System Ld_library_path Um den dynamischen Linkloader, ein kleines Programm, das alle Ihre Anwendungen beginnt. Ein Colon (:) trennt eine Liste von Verzeichnissen, und diese Liste wird bereits vor integrierten Suchpfad/Pfaden und konventionellen Orten wie (/lib,/usr/lib…) überprüft.

Einige andere Verwendungen von ld_library_path sind:

  • Vergleich neuer Versionen einer gemeinsamen Bibliothek mit einer zuvor zusammengestellten Anwendung.
  • Umzug von gemeinsam genutzten Bibliotheken beispielsweise, um frühere Versionen am Leben zu erhalten.
  • Es wird auch verwendet, um ein autarkes System zu erstellen, die sich für größere Anwendungen befreien, so dass sie unabhängig von sich ändernden Systembibliotheken sind.

Problem mit ld_library_path

Es ist sehr nützlich, bis Sie versuchen, es zu verwenden, um Ihre Probleme zu lösen. Diese Zeile scheint seltsam zu sein, aber genau das passiert wirklich, wenn Sie versuchen, sie in einer Benutzer-/Systemumgebung anzuwenden, das Szenario verschlechtert sich und alle Umgebungsvariablen beginnen abhängig davon und stürzt ab, da sie nicht alle Aufgaben erledigen können!

Einige Probleme, mit denen LD_LIBRARY_PATH konfrontiert ist, sind:

Sicherheit: LD_LIBRARY_PATH -Verzeichnisse werden zuerst vor ihrem tatsächlichen Standort überprüft. Dieser Ansatz könnte von einer böswilligen Person verwendet werden, um Ihre Bewerbung dazu zu zwingen, eine böswillige Version einer gemeinsamen Bibliothek auszuführen. Einer der Gründe, warum SetUid/SetGid -Executable diese Variable ignorieren.

Leistung: Link Loader muss in allen bereitgestellten Verzeichnissen suchen, bis er gemeinsame Bibliotheken findet (verknüpft mit der Anwendung). Folglich wird sich mehrere Systemanrufe öffnen und sie mit Enoent zum Absturz bringen "keine solche Datei oder Verzeichnis". Wenn der angegebene Pfad viele Verzeichnisse hat, dauert es lange und Sie können dies aus der Startzeit Ihrer Bewerbung überprüfen. Infolgedessen wird das gesamte System verlangsamt.

Inkonsistenz: Das am weitesten verbreitete Problem, das durch die Verwendung von LD_LIBRARY_PATH verursacht wird, ist Inkonsistenz. Ld_library_path zwingt ein Programm zum Laden einer gemeinsam genutzten Bibliothek, mit der sie nicht verknüpft war. Dies ist mit der Originalversion sehr sicher nicht kompatibel. Dies kann stark offensichtlich sein, z. B. wenn die Anwendung abstürzt oder zu falschen Ergebnissen führen kann, wenn die abgesetzte Bibliothek nicht genau mit der Funktionalität der Originalversion übereinstimmt. Dies wird schwierig sein, letzteres zu debuggen, insbesondere letztere.

Lösung

Die beste Lösung ist, desto weniger Ärger werden Sie ausgesetzt sind. Infact versuchen Sie, die Verwendung von LD_LIBRARY_PATH zu vermeiden:

So vermeiden Sie ld_library_path:

Geben Sie den richtigen Standort der gemeinsam genutzten Bibliothek an: Wenn Sie Ihre Anwendung kompilieren, müssen Sie den genauen Speicherort der gemeinsam genutzten Bibliotheken angeben und den Pfad in der Option "-rpath" -Linker angeben

Werkzeug zur Behebung des Problems:Um den Runpath einer binären ausführbaren Datei zu beheben/zu ändern, sind Programme verfügbar, wie Chrad unter Linux. Auf diese Weise ist das Problem, dass der ausführbare Speicherplatz, der diese Informationen enthält (i).e. die Pfadfolge) kann nicht erweitert werden, ich.e. Sie können nur einen vorhandenen Pfad umschreiben.

Legen Sie nicht ld_library_path in das Benutzerprofil ein: Wenn Sie ld_library_path in das Benutzerprofil einfügen, erstellen Sie Probleme. Vermeiden Sie dies. Vermeiden Sie dies.

Legen Sie nicht ld_library_path in das Systemprofil ein: Einige ISVs bieten Software, die automatisch globale LD -Bibliotheks -Pfadeinstellungen in Systemprofile während der Installation einfügt oder den Benutzer dazu auffordern, dies zu tun. Sag einfach nein! Versuchen Sie, das Problem auf eine andere Weise zu behandeln, zum Beispiel, indem Sie ein Wrapper -Skript schreiben, oder sagen Sie dem Anbieter, dass er es korrigieren soll.

Ld_library_path ist nützlich, wenn es für drei Verwendungen verwendet wird, die im Gebrauchsteil erwähnt werden, aber versuchen Sie, es so wenig wie möglich zu verwenden, um sich vor Schwierigkeiten zu schützen.

Abschluss

Ld_library_path ist eine Umgebungsvariable, die in Linux/UNIX -Systemen verwendet wird. Es wird verwendet, um dynamische Linklader zu mitteilen, wo sie nach gemeinsamen Bibliotheken für bestimmte Anwendungen suchen sollen. Es ist nützlich, bis Sie sich nicht damit anlegen. Es ist besser, die Verwendung von ld_library_path zu vermeiden und Alternativen zu verwenden. In diesem Artikel wird die Verwendung der Umgebungsvariablen ld_library_path diskutiert und dann wird das Problem mit der Verwendung und dann der Lösung erörtert. Nach dem Lesen dieses Artikels lernen Sie die Vor- und Nachteile der Variablen ld_library_path kennen.