soname («имя общего объекта») - это метка, используемая при объявлении зависимостей общей библиотеки. Каждый исполняемый файл содержит список общих библиотек, которые ему необходимы для выполнения. Общие библиотеки могут аналогичным образом объявлять зависимости от других общих библиотек. Это может быть сделано с использованием путей, но если необходимая библиотека имеет имя сына, это будет использоваться в предпочтении.
Как правило, путь к библиотеке будет меняться всякий раз, когда устанавливается новая версия, тогда как имя сына должно изменяться только когда новая версия несовместима со своими предшественниками в той степени, в которой она не может быть использована на их месте. Из этого следует, что, когда зависимости объявляются с использованием sonames, библиотека, используемая во время выполнения, не обязательно должна точно соответствовать существующей во время сборки:
- Для данной библиотеки с данным soname, только самая большая необходимо установить последнюю версию.
- Если необходимо установить две версии одной и той же библиотеки рядом друг с другом, их можно различить, так как они имеют разные сонамы.
Это степень бинарной совместимости, которая определяет, изменится ли сонама. Например, новые функции могут быть добавлены без нарушения обратной совместимости, но вы не можете ни изменить прототип существующей функции, ни сделать что-либо, что могло бы изменить структуру структуры данных. Также следует учитывать изменения, внесенные в поведение библиотеки на высоком уровне, поскольку они могут оказать одинаково существенное влияние на обратную совместимость.