Мені відомо, що спільні об'єкти в Linux використовують "так числа", а саме, що різні версії спільного об'єкта отримують різні розширення, наприклад:
example.so.1
example.so.2
Я розумію, що ідея полягає в тому, щоб мати два різних файли, щоб дві системи бібліотеки могли існувати в системі (на відміну від "DLL Hell" в Windows). Я хотів би знати, як це працює на практиці? Часто я бачу, що example.so
насправді є символічним посиланням на те, example.so.2
де .2
є остання версія. Як тоді програма залежно від старішої версії example.so
ідентифікує її правильно? Чи існують правила щодо того, які числа потрібно використовувати? Або це просто умова? Це так, що, на відміну від Windows, де програмні файли передаються між системами, якщо система має більш нову версію спільного об'єкта, вона автоматично підключається до старої версії при компілюванні з джерела?
Я підозрюю, що це пов'язано, ldconfig
але я не знаю, як.