Mir ist bekannt, dass freigegebene Objekte unter Linux "so numbers" verwenden, dh dass verschiedene Versionen eines freigegebenen Objekts unterschiedliche Erweiterungen erhalten, zum Beispiel:
example.so.1
example.so.2
Ich verstehe die Idee ist, zwei verschiedene Dateien zu haben, so dass zwei Versionen einer Bibliothek auf einem System existieren können (im Gegensatz zu "DLL Hell" unter Windows). Ich möchte wissen, wie das in der Praxis funktioniert? Oft sehe ich , dass example.so
in der Tat ist ein symbolischer Link auf , example.so.2
wo .2
ist die neueste Version. Wie erkennt dann eine Anwendung, die von einer älteren Version example.so
abhängt, diese richtig? Gibt es Regeln, welche Zahlen man verwenden muss? Oder ist das einfach Konvention? Ist es der Fall, dass im Gegensatz zu Windows, in dem Software-Binärdateien zwischen Systemen übertragen werden, ein System, das über eine neuere Version eines freigegebenen Objekts verfügt, beim Kompilieren aus dem Quellcode automatisch mit der älteren Version verknüpft wird?
Ich vermute, das hängt damit zusammen, ldconfig
aber ich bin mir nicht sicher, wie.