Qual versão faz o uso do sistema se houver várias versões de uma biblioteca

1

Digamos que temos a biblioteca freetype já instalada em /usr/lib64/libfreetype.so cuja versão é 1.4 e há outra versão desta biblioteca que compilamos e instalamos em /usr/local/lib/libfreetype.so. Como o sistema de compilação (make) sabe qual versão usar quando estamos construindo um software que requer freetype?

    
por codezombie 31.05.2018 / 15:37

2 respostas

1

Versão TL; DR: depende.

  • SO: pode haver um arquivo de configuração de ambiente específico do SO ( LD_LIBRARY_PATH ) ou um comando (como ldconfig(8) ) que registra os caminhos usados para procurar por bibliotecas.
  • sistema de criação: pode haver variáveis de ambiente como LDFLAGS ou sinalizadores de linha de comando ou configurações do arquivo de configuração; mutt tem --with-curses=[dir] para quando o sistema (ou usuário) possui ncurses sob um caminho personalizado. Eles dependem do sistema de compilação (ou até mesmo do sabor de make ) e podem precisar ser gravados manualmente nos arquivos autoconf ou cmake.
  • configuração pós-compilação: ferramentas como patchelf (se disponível) permitem a seleção de diferentes bibliotecas ou alteração do caminho de pesquisa.
por 31.05.2018 / 16:02
0

libxxx.so geralmente é um link simbólico para o arquivo da biblioteca compartilhada que inclui a versão no nome.

Se você vincular usando -lxxx , esse arquivo libxxx.so será usado.

Se você quiser se vincular a outra versão, precisará especificar o nome completo do caminho da biblioteca.

    
por 31.05.2018 / 15:50

Tags