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.1example.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.sode hecho es un enlace simbólico a example.so.2dónde .2está la última versión. ¿Cómo, entonces, una aplicación que depende de una versión anterior la example.soidentifica 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, ldconfigpero no estoy seguro de cómo.