O que significa o dígito depois de .so nos nomes de arquivos da biblioteca?

2

Não parece ser uma versão, aqui está um exemplo nome: libcurl.so.4.3.0 versão 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!

Uma segunda pergunta seria como recuperar o número correto da versão, mas tenho a impressão de que pode ser impossível (fazer isso em 100% dos casos). Aqui você pode obtê-lo com strings, mas em outras bibliotecas ele produzirá 10 versões diferentes, por exemplo

    
por user3916237 30.12.2016 / 15:06

1 resposta

1

Um ".so" (objeto compartilhado) é uma biblioteca. Como tal, ele fornece uma interface definida para os programas vinculados a ele para fazer uso da funcionalidade fornecida pela biblioteca, também chamada de API . Nos objetos compartilhados, essa API é versionada, de modo que os programas que usam a biblioteca podem usar uma versão com a qual sejam compatíveis. Veja também esta resposta em "Unix e Linux".

A versão da biblioteca que você mencionou pode ser independente da versão da API. A versão da biblioteca descreveria o código que compõe a funcionalidade da biblioteca, a implementação. Pode aumentar quando os erros são corrigidos ou os algoritmos são otimizados. Mas, ao mesmo tempo, a API pode permanecer estável, o que significa que os nomes das funções e seus parâmetros não mudam, portanto, a versão da API permanece a mesma.

O dígito após o .so descreve a versão da API.

    
por 30.12.2016 / 21:02