Описание тега shared-library

Связанные с общими библиотеками, файлами.so и их манипуляциями в Ubuntu

Общие библиотеки распространяются как .so файлы в /usr/lib/, Эти файлы представляют собой скомпилированный код, который предназначен для совместного использования несколькими различными программами.

Библиотека экспортирует символы, которые являются скомпилированными версиями функций, классов и переменных. У библиотеки есть имя, называемое SONAME, которое включает номер версии. Эта версия SONAME не обязательно соответствует общедоступному номеру версии. Программа компилируется с заданной версией библиотеки SONAME. Если какой-либо из символов удаляется или изменяется, необходимо изменить номер версии, что приводит к перекомпиляции любых пакетов, использующих эту библиотеку, с новой версией. Номера версий обычно устанавливаются апстримом, и Ubuntu следует за ними в именах наших двоичных пакетов, называемых номерами ABI, но иногда апстрим не использует разумные номера версий, и упаковщики должны хранить отдельные номера версий.

Библиотеки обычно распространяются апстримом в виде отдельных выпусков. Иногда они распространяются как часть программы. В этом случае они могут быть включены в двоичный пакет вместе с программой (это называется связыванием), если вы не ожидаете, что другие программы будут использовать библиотеку, чаще их следует разбивать на отдельные двоичные пакеты.

Сами библиотеки помещаются в двоичный пакет с именем libfoo1 где foo это имя библиотеки и 1 это версия от SONAME. Файлы разработки из пакета, такие как заголовочные файлы, необходимые для компиляции программ с библиотекой, помещаются в пакет, называемый libfoo-dev,