Указание версии динамической библиотеки под Linux при связывании

Вводные: Linux Mint 19 + Lazarus 2.0.10 + fpc 3.2.0, всё это на virtualBox 6.1.14.

Отсюда имеем такой шаблон для задания имени библиотеки:

A dynamic library filename always has the form ‘lib’+packagename+’.so’+version. For example: libz.so.1 and `libz.so.1.2.2

На деле же библиотека находится даже не указывая версию, т.е. если оставить просто libz.so.

Вопрос: это баг или фича? По идее так можно не перекомпилировать программу при обновлении билиотеки до следующей версии.

Фича, какие ж они динамические если бы была привязка к точной версии )

С версией это имя реального файла, но еще есть симлинки. В итоге вроде возьмется самая свежая доступная в системе если не указывать версию.

И не уверен точно, но по-моему есть привязка к первому числу из версии, то есть программа скомпилированная для libz.so.2 не будет работать если есть только libz.so.1 или libz.so.3
Потому что первое число по идее должно меняться только при наличии несовместимых изменений.

https://semver.org/
https://www.ibm.com/developerworks/linux/library/l-shlibs/index.html
https://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

1 лайк