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