Soy consciente de que los objetos compartidos en Linux usan "números", es decir, que las diferentes versiones de un objeto compartido reciben diferentes extensiones, por ejemplo:
example.so.1
example.so.2
Entiendo que la idea es tener dos archivos distintos de modo que puedan existir dos versiones de una biblioteca en un sistema (a diferencia de "DLL Hell" en Windows). ¿Me gustaría saber cómo funciona esto en la práctica? A menudo, veo que example.so
de hecho es un enlace simbólico a example.so.2
dónde .2
está la última versión. ¿Cómo, entonces, una aplicación que depende de una versión anterior la example.so
identifica correctamente? ¿Hay alguna regla sobre qué números se deben usar? ¿O es simplemente una convención? ¿Es el caso que, a diferencia de Windows donde los archivos binarios de software se transfieren entre sistemas, si un sistema tiene una versión más nueva de un objeto compartido, se vincula automáticamente a la versión anterior cuando se compila desde la fuente?
Sospecho que esto está relacionado, ldconfig
pero no estoy seguro de cómo.