FreeBSD Developers' Handbook
Zurück | Kapitel 5. Vorgaben und Richtlinien für das Quelltextverzeichnis | Weiter

# 5.4. Shared-Libraries

Beigesteuert von Satoshi Asami, Peter Wemm und David O'Brien.

Sollten Sie die Unterstützung für Shared-Libraries bei einem Port oder einem Stück Software, das dies nicht hat, hinzufügen, sollten die Versionsnummern dessen Regeln folgen. Im Allgemeinen hat die sich daraus resultierende Nummer nichts mit der Release-Version der Software zu tun.

Die drei Grundsätze zum Erstellen von Shared-Libraries sind:

- Sie beginnen mit `1.0`.

- Gibt es eine Änderung, die abwärtskompatibel ist, so springen Sie zur nächsten Minor-Version (beachten Sie, dass ELF-Systeme die Minor-Version ignorieren).

- Gibt es eine inkompatible Änderung, so springen Sie bitte zur nächsten Major-Version.

Zum Beispiel wird beim Hinzufügen von Funktionen und oder Fehlerbehebungen zur nächsten Minor-Version gesprungen, beim Löschen einer Funktion, Ändern von Funktionsaufrufen usw. ändert sich die Major-Version.

Bleiben Sie bei Versionsnummern in der Form major.minor (`x`.`y`). Unser dynamischer Linker a.out kann mit Versionsnummern in der Form `x`.`y`.`z` nicht gut umgehen. Jede Versionsnummer nach dem `y` (die dritte Zahl) wird völlig ignoriert, wenn Versionsnummern der Shared-Libraries verglichen werden, um zu bestimmen, mit welcher Bibliothek eine Anwendung verlinkt wird. Sind zwei Shared-Libraries vorhanden, die sich nur in der “micro”-Revision unterscheiden, so wird `ld.so` zu der höheren verlinken. Dies bedeutet, dass wenn Sie mit `libfoo.so.3.3.3` verlinken, der Linker nur `3.3` in den Header aufnimmt und alles linkt, was mit `libfoo.so.3` .`(irgendetwas >= 3)`.`(höchste verfügbare Nummer)` beginnt.

> Anmerkung: `ld.so` wird immer die höchste “Minor”-Revision benutzen. Beispielsweise wird es die `libc.so.2.2` bevorzugen gegenüber der `libc.so.2.0`, auch dann, wenn das Programm ursprünglich mit `libc.so.2.0` verlinkt war.

Unser dynamischer ELF-Linker kann keine Minor-Versionen handhaben. Dennoch sollten die Major- und Minor-Versionen genutzt werden, da unsere `Makefile`s “das Richtige machen” bezogen auf den Systemtyp.

Für nicht-Port-Bibliotheken lautet die Richtlinie, die Shared-Library-Versionsnummer nur einmal zwischen den Releases zu ändern. Weiterhin ist es vorgeschrieben, die Major-Version der Shared-Libraries nur bei Major-OS-Releases zu ändern (beispielsweise von 3.0 auf 4.0). Wenn Sie also eine Änderung an einer Systembibliothek vornehmen, die eine neue Versionsnummer benötigt, überprüfen Sie die Commit-Logs des `Makefile`s. Es liegt in der Verantwortung des Committers, dass sich eine erste solche Änderung seit dem letzten Release in der aktualisierten Versionsnummer der Shared-Library im `Makefile` äußert, folgende Änderungen werden nicht berücksichtigt.

Zurück | Zum Anfang | Weiter
Belastende Dateien | Nach oben | Regressions- und Performance-Tests

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.