Что означает цифра после .so в именах библиотек?

275
user3916237

Это не версия, вот пример имени: libcurl.so.4.3.0 версия 7.40

me@pc:/somefirmware/extracted/lib$ strings libcurl.so.4.3.0 | grep -i "libcurl" libcurl.so.4 # This file was generated by libcurl! Edit at your own risk. # Fatal libcurl error Protocol "%s" not supported or disabled in libcurl CLIENT libcurl 7.40.0 CLIENT libcurl 7.40.0 CLIENT libcurl 7.40.0 libcurl/7.40.0 Unrecognized content encoding type. libcurl understands `identity', `deflate' and `gzip' content encodings. A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. A libcurl function was given a bad argument An unknown option was passed in to libcurl libcurl is now using a weak random seed! 

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

2

1 ответ на вопрос

1
Florian

«.So» (Shared Object) - это библиотека. Как таковой, он обеспечивает определенный интерфейс для программ, ссылающихся на него, чтобы использовать функциональные возможности, предоставляемые библиотекой, также называемые API . В общих объектах этот API является версионным, поэтому программы, использующие библиотеку, могут использовать версию, с которой они совместимы. Смотрите также этот ответ на "Unix & Linux".

Упомянутая вами версия библиотеки может быть независимой от версии API. Версия библиотеки будет описывать код, который составляет функциональность библиотеки, реализацию. Он может увеличиться, когда исправлены ошибки или оптимизированы алгоритмы. Но в то же время API может оставаться стабильным, что означает, что имена функций и их параметры не меняются, поэтому версия API остается неизменной.

Цифра после .so описывает версию API.

Похожие вопросы