Versão da biblioteca, versão da API e soname: como devem ser nomeados?

4

Suponha que eu tenha uma biblioteca chamada libfoo e

  • sua versão é 0.4.2
  • em que 0.4 é a versão da API e
  • 2 é o número da versão que pode adicionar novas funções da API.

O soname deve ser libfoo.so.0.4 , libfoo.so.0.4.2 ou outra coisa?

    
por Reinder 06.06.2014 / 09:07

2 respostas

4

Se a versão da API for 0.4 e for incompatível com outras versões 0.* , você deverá definir o soname como libfoo.so.0.4 . Na verdade, soname pode ser qualquer string, só é necessário encontrar a biblioteca compartilhada adequada em seu sistema ao carregar o executável.

Muitos pacotes (ou distros) seguem um esquema de nomenclatura diferente do seu. Por exemplo, a versão libfoo 0.4.2 com api 0.4 se tornaria libfoo.so.4.2 com soname libfoo.4 .

E ao fazer mudanças substanciais na interface, exigindo não apenas a recompilação e a correção menor aqui e ali, mas muito código reescrito no código usando a biblioteca - aumente a versão principal "principal" renomeando a biblioteca. Em seguida, libfoo.4.2 se transforma em libfoo-1.so.0.1 ao aplicar a versão de 0.4.2 a 1.0.1 .

Esse esquema facilita a instalação de várias versões de sua biblioteca, caso algum software antigo ainda não tenha sido reescrito para uma API totalmente nova.

    
por 28.08.2014 / 15:11
0

Normalmente você cria o arquivo libfoo.so.0.4.2 e o symlink libfoo.so.0 - > libfoo.so.0.4.2

    
por 06.06.2014 / 10:37