Я знаю, что общие объекты в Linux используют «так числа», а именно, что разные версии общего объекта имеют разные расширения, например:
example.so.1
example.so.2
Я понимаю, что идея состоит в том, чтобы иметь два разных файла, чтобы в системе могли существовать две версии библиотеки (в отличие от «DLL Hell» в Windows). Я хотел бы знать, как это работает на практике? Часто я вижу , что example.so
это на самом деле является символической ссылкой на example.so.2
где .2
это последняя версия. Как тогда приложение в зависимости от более старой версии example.so
идентифицирует его правильно? Есть ли какие-либо правила относительно того, какие числа нужно использовать? Или это просто соглашение? Является ли это случаем, что, в отличие от Windows, где двоичные файлы программного обеспечения передаются между системами, если в системе установлена более новая версия общего объекта, она автоматически связывается со старой версией при компиляции из исходного кода?
Я подозреваю, что это связано с, ldconfig
но я не уверен, как.