GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum brauchen wir die .so.1-Datei unter Linux?

Nehmen wir an, wir sprechen über libtest . Wenn Sie sich umschauen, sehen Sie libtest.so , was ein Link zu libtest.so.1 ist , die wiederum auf libtest.so.1.5 verweist .

Eine ausführbare Datei mit libtest wird gegen libtest.so verlinken das ist libtest.so.1 in diesem Fall (wird in die ausführbare Datei geschrieben, siehe ldd(1) ). Wenn sich Ihre Distribution ändert libtest um Fehler zu beheben, könnte die neue Version libtest.so.1.6 geben (und nach Update libtest.so.1 Links darauf, laufende Programme verwenden weiterhin libtest.so.1.5 bis sie aussteigen). Solange keine ABI-Änderungen vorgenommen werden, funktioniert alles einwandfrei. Und dass es keine API-Änderungen gibt, wird durch die unveränderte Versionsnummer 1 signalisiert.

Sagen wir mal die besetzte libtest Biber kommen mit einer neuen, glänzenden, von Grund auf neu geschriebenen Bibliothek mit geändertem ABI. Als sich die ABI geändert hat, ändern sie die Hauptversionsnummer auf 2. Sie installieren diese und jetzt haben Sie die Kette libtest.so --> libtest.so.2 --> libtest.so.2.1 . Beachten Sie, dass Sie jetzt beide Versionen 1 und 2 installiert haben. Ihre früheren Programme funktionieren immer noch einwandfrei, wenn sie libtest.so.1 verwenden , aber wenn Sie ein neues Programm kompilieren, nimmt der Compiler (eigentlich der Linker) libtest.so auf und damit die ausführbare Datei auf den neuen libtest.so.2.1 verweisen (es sei denn, Sie werden ausdrücklich aufgefordert, die alte Version zu verwenden).

Beachten Sie, dass die so-Versionsnummern keine Beziehung zu den Versionsnummern des Quellcodes haben müssen; Die Major-Nummer ist die ABI-Version, die Minor-Nummer ist optional und kann verwendet werden, um Revisionen zu verfolgen. Hier (Fedora 20) verwende ich also systemd-libs-208-15.fc20.x86_64 , die libsystemd-daemon.so.0.0.10 bereitstellt .


Dies sind verschiedene Versionen derselben Bibliothek.

Normalerweise möchten Sie die neueste stabile Version der Bibliothek, also verknüpfen Sie mit x.so, das mit dieser neuesten Version verknüpft ist. Wenn eine neue Version verfügbar wird, z. B. x.so.2, können Sie Ihr gesamtes System dazu bringen, sie zu verwenden, indem Sie x.so mit x.so.2 verlinken

Manchmal möchten Sie auf eine alte Version verlinken - zum Beispiel, wenn Ihr Programm auf eine behobene Eigenart angewiesen ist oder die neueste Version einen Fehler eingeführt hat. Manchmal möchten Sie auf eine neue experimentelle Version verlinken – zum Beispiel, wenn Sie sie testen oder wenn sie einen Fehler in der aktuellen Version behebt. In diesem Fall würden Sie direkt auf die nummerierte Version verlinken - hoffentlich als vorübergehende Maßnahme.


Linux
  1. Warum mich mein Bedürfnis nach Kontrolle dazu gebracht hat, zu Linux zu wechseln

  2. Linux – Alles ist eine Datei?

  3. Benötigen Sie einen guten Hex-Editor für Linux

  4. Warum wird select unter Linux verwendet

  5. Warum brauchen wir einen Bootloader in einem eingebetteten Gerät?

Weniger Befehl unter Linux

Gzip-Befehl unter Linux

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux

Linux-Dateikomprimierung:Alles, was Sie wissen müssen

Linux-Dateiberechtigungen:Alles, was Sie wissen müssen