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

Wie wird die Versionierung einer gemeinsam genutzten Bibliothek unter Linux durchgeführt?

Die Kurzversion ist, dass Sie dies über den Sonamen der Bibliothek tun. Lesen Sie Kapitel 3 unter http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html sowie Kapitel 3.3 ABI-Versionierung unter http://www.akkadia.org/drepper/dsohowto.pdf


Linux verwendet die folgende Strategie – Sie (der Systembetreuer) stellen symbolische Links von einer „spezifischen“ gemeinsam genutzten Bibliotheksdatei bereit, wie hier:

lrwxrwxrwx 1 root root    16 2011-09-22 14:36 libieee1284.so -> libieee1284.so.3
lrwxrwxrwx 1 root root    20 2011-09-22 14:36 libieee1284.so.3 -> libieee1284.so.3.2.2
-rw-r--r-- 1 root root 46576 2011-07-27 13:08 libieee1284.so.3.2.2

Auf diese Weise können Entwickler entweder gegen -lieee1284 (beliebige Version ABI) oder libieee1284.so.3 oder sogar mit der spezifischen Release- und Patch-Version (3.2.2) verlinken


Der beste Weg, dies zu handhaben, ist die Verwendung von libtool, das die Versionierung für Sie übernimmt.

Im Wesentlichen sind Versionsinformationen nicht (oder nicht primär, weiß ich nicht) in der Bibliothek selbst codiert, sondern in ihrem Dateinamen. Versionsnummern werden normalerweise im Drei-Punkte-Format angegeben, wobei die Hauptnummer für jede Unterbrechung der ABI-Abwärtskompatibilität zunimmt, die mittlere für Unterbrechungen der ABI-Aufwärtskompatibilität und die untergeordnete für Patches, die die ABI nicht geändert haben.

Wie qdot angemerkt hat, stellen symbolische Links im lib-Verzeichnis die wesentliche Versionierung bereit. Es gibt einen Symlink ohne Versionsnummer (libfoo.so) für die aktuell installierten Entwicklungsheader, einen Symlink mit einer Hauptnummer für jede installierte Hauptversion (libfoo.so.1) und eine echte Datei mit der vollständigen Versionsnummer. Normalerweise werden Programme so gelinkt, dass sie zur Laufzeit libfoo.so.1 verwenden, sodass mehrere Hauptversionen koexistieren können.


Linux
  1. So überprüfen Sie die Version der libc-Bibliothek unter Debian Linux

  2. So überprüfen Sie die Redhat-Version

  3. C++ Dynamic Shared Library unter Linux

  4. Wie kann ich eine Verknüpfung zu einer älteren Version einer gemeinsam genutzten Bibliothek herstellen?

  5. Wie versteht man die Linux-Versionierung?

So überprüfen Sie die Kali Linux-Version

So überprüfen Sie die Linux-Version

So überprüfen Sie die Kernel-Version in Linux

So aktualisieren Sie Alpine Linux auf die neueste Version

So installieren Sie die PyBrain-Python-Bibliothek unter Linux

So überprüfen Sie die PHP-Version unter Linux