Почему текущий libtool используется в BSD как SOVERSION, а не в качестве основного?

В Unix-подобных системах динамические разделяемые библиотеки (файлы .so) имеют расширение SONAME. Его можно извлечь, например, с помощью: readelf -a libfoo.so.0.3.2 | grep SONAME -> libfoo.so.0. Последняя часть также называется SOVERSION. Этот номер версии отмечает версии библиотеки, которые являются двоично-совместимыми (ABI). Поэтому, когда программа ссылается на одну версию библиотеки, она также может использовать более позднюю версию, если SOVERSION не изменится.

Libtool имеет -version-info механизм для определения такого SOVERSION с current, revision и age. Подсказка: current увеличивается также при совместимых изменениях, а major = current - age используется в большинстве систем для установки SOVERSION.

Однако в BSD (FreeBSD, NetBSD, OpenBSD) для SOVERSION установлено значение current, что упоминается в нескольких местах, таких как suse-wiki, и я также тестировал это на упомянутых платформах.

Возникает вопрос: почему libtool делает это в BSD? Почему это считается «способом, которым BSD делает это»?

Это означает, что каждое совместимое изменение для Linux / Darwin / SunOS несовместимо с BSD, потому что SOVERSION изменяется.


person JonnyJD    schedule 05.03.2013    source источник
comment
Я проследил libtool до 2e68bf5aecc88e67b7b33e30802f05585a59e278, где это поведение реализовано в 1999 году Эдуардом Пармеланом. Однако даже не упоминается в сводке коммита.   -  person JonnyJD    schedule 05.03.2013
comment
Дополнительную информацию можно найти в Tickets.musicbrainz.org/browse/LIB-33. Однако самые важные ссылки находятся в ответе kepstin.   -  person JonnyJD    schedule 06.03.2013


Ответы (1)


По словам по крайней мере одного разработчика, который разместил сообщение в списке рассылки GNU, это можно считать ошибкой:

https://lists.gnu.org/archive/html/bug-libtool/2011-05/msg00007.html

Это электронное письмо также полно полезных ссылок на политики управления версиями библиотек для различных BSD, которые действительно противоречат поведению libtool.

person kepstin    schedule 05.03.2013
comment
Похоже, это похоже на управление версиями IRIX: lists.gnu. org / archive / html / bug-libtool / 2002-01 / msg00003.html Они добавили +1 для них из-за некоторых спецификаций в какой-то локальной папке, и 2002 уже не знает, почему это имеет смысл. версия 0 вообще-то не проблема. - person JonnyJD; 06.03.2013