Was bedeutet die Ziffer nach .so in Bibliotheksdateinamen?

360
user3916237

Es scheint keine Version zu sein, hier ist ein Beispiel: libcurl.so.4.3.0 Version 7.40

me@pc:/somefirmware/extracted/lib$ strings libcurl.so.4.3.0 | grep -i "libcurl" libcurl.so.4 # This file was generated by libcurl! Edit at your own risk. # Fatal libcurl error Protocol "%s" not supported or disabled in libcurl CLIENT libcurl 7.40.0 CLIENT libcurl 7.40.0 CLIENT libcurl 7.40.0 libcurl/7.40.0 Unrecognized content encoding type. libcurl understands `identity', `deflate' and `gzip' content encodings. A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. A libcurl function was given a bad argument An unknown option was passed in to libcurl libcurl is now using a weak random seed! 

Eine zweite Frage wäre, wie man die korrekte Versionsnummer abruft, aber ich habe das Gefühl, dass es unmöglich ist (dies in 100% der Fälle). Hier können Sie es mit Strings erhalten, aber in anderen Bibliotheken ergeben sich beispielsweise 10 verschiedene Versionen

2

1 Antwort auf die Frage

1
Florian

Ein ".so" (Shared Object) ist eine Bibliothek. Als solches stellt es eine definierte Schnittstelle für Programme bereit, die eine Verknüpfung herstellen, um die Funktionalität der Bibliothek, auch API genannt, zu nutzen . In Shared Objects ist diese API versioniert, sodass Programme, die die Bibliothek verwenden, eine Version verwenden können, mit der sie kompatibel sind. Siehe auch diese Antwort zu "Unix & Linux".

Die von Ihnen erwähnte Bibliotheksversion kann unabhängig von der API-Version sein. Die Bibliotheksversion würde den Code beschreiben, aus dem die Funktionalität der Bibliothek und die Implementierung besteht. Es kann sich erhöhen, wenn Fehler behoben oder Algorithmen optimiert werden. Gleichzeitig kann die API jedoch stabil bleiben, was bedeutet, dass die Funktionsnamen und ihre Parameter nicht geändert werden, sodass die API-Version unverändert bleibt.

Die Ziffer hinter dem .so beschreibt die API-Version.