Wiem, że współdzielone obiekty pod Linuksem używają „więc liczb”, a mianowicie, że różne wersje współdzielonego obiektu mają różne rozszerzenia, na przykład:
example.so.1
example.so.2
Rozumiem, że chodzi o to, aby mieć dwa różne pliki, tak aby dwie wersje biblioteki mogły istnieć w systemie (w przeciwieństwie do „DLL Hell” w systemie Windows). Chciałbym wiedzieć, jak to działa w praktyce? Często widzę, że example.so
jest w rzeczywistości dowiązaniem do example.so.2
gdzie .2
jest najnowsza wersja. Jak zatem aplikacja w zależności od starszej wersji example.so
poprawnie ją identyfikuje? Czy istnieją jakieś zasady dotyczące tego, jakich liczb należy używać? Czy jest to po prostu konwencja? Czy w przeciwieństwie do systemu Windows, w którym binarne oprogramowanie jest przesyłane między systemami, jeśli system ma nowszą wersję obiektu współużytkowanego, jest on automatycznie łączony ze starszą wersją podczas kompilacji ze źródła?
Podejrzewam, że jest to związane, ldconfig
ale nie jestem pewien jak.