B.Brodesser@t-online.de (Bernd Brodesser) [27 Aug 2002 19:38:32]:
/usr/lib/libmenu.so -> libmenu.so.5 /usr/lib/libmenu.so.4 -> libmenu.so.4.2 /usr/lib/libmenu.so.4.2 /usr/lib/libmenu.so.5 -> libmenu.so.5.2 /usr/lib/libmenu.so.5.2
Wenn ein Programm libmenu.so oder libmenu.so.5 verlangt, so wird libmenu.so.5.2 genommen, wenn es libmenu.so.4 verlangt, so wird libmenu.so.4.2 genommen. Richtig? Hört sich doch recht sinnvoll an, wo tauchen denn da Probleme auf? Wenn ein Programm explizit libmenu.so.5.1 verlangt, oder so? Aber gehört ein solches Programm nicht abgewatscht?
Wenn eine dynamische Bibliothek erstellt wird, kann man dem Linker angeben, welchen internen Namen (der sog. Soname) die Bibliothek haben soll. In den allermeisten Fällen ist dies lib<name>.so.<Hauptversion>. Wird nun ein Programm gegen diese Bibliothek gelinkt, wird dieser Soname im Programm eingetragen. Wird dieses Programm ausgeführt, sucht der dynamische Linker nach einer Bibliothek mit diesem Namen. Über den Symlink libname.so.<hauptversion> -> libname.so.<hauptversion>.<minorversion> findet er sie dann auch. Die lib<name>.so Dateien werden i.d.R. ausschliesslich vom statischen Linker zum Erstellen des Programmes benötigt. Philipp -- Philipp Thomas Arbeit: pthomas@suse.de Entwicklung, SuSE Linux AG Privat: pth@t-link.de