Sono consapevole che gli oggetti condivisi su Linux usano "così numeri", vale a dire che alle diverse versioni di un oggetto condiviso vengono assegnate estensioni diverse, ad esempio:
example.so.1
example.so.2
Capisco l'idea è di avere due file distinti in modo tale che su un sistema possano esistere due versioni di una libreria (al contrario di "DLL Hell" su Windows). Mi piacerebbe sapere come funziona in pratica? Spesso, vedo che example.so
in realtà è un collegamento simbolico a example.so.2
dove .2
è l'ultima versione. In che modo quindi un'applicazione che dipende da una versione precedente di example.so
identificarla correttamente? Ci sono delle regole su quali numeri si devono usare? O è semplicemente una convenzione? È vero che, a differenza di Windows in cui i file binari del software vengono trasferiti tra sistemi, se un sistema ha una versione più recente di un oggetto condiviso, viene automaticamente collegato alla versione precedente durante la compilazione dal sorgente?
Ho il sospetto che questo sia legato ldconfig
ma non sono sicuro di come.