Existe uma maneira de configurar o caminho de pesquisa da biblioteca temporariamente

4

Implementamos nosso aplicativo com todas as dependências necessárias em um diretório. Nosso aplicativo define LD_LIBRARY_PATH para esse local. Algumas das bibliotecas (por exemplo, OpenSSL) também estão presentes nos locais do sistema. E, de fato, quando removemos esse objeto compartilhado do diretório de aplicativos, o aplicativo ainda é executado com todos os possíveis desastres (como a versão errada). Eu preferiria ter um aviso emitido que o objeto compartilhado não pode ser encontrado se eu removê-lo do diretório do aplicativo

É possível redefinir o caminho de pesquisa do carregador dinâmico de tal forma que, de fato, ele só procura no LD_LIBRARY_PATH por determinados objetos?

    
por adlag 13.12.2015 / 17:12

1 resposta

2

Eu não acho que você possa impedir a pesquisa de bibliotecas no caminho do sistema em tempo de execução, mas de acordo com a página man ld.so, se você vincular o binário com -z nodeflib , o vinculador dinâmico não pesquisará o sistema caminho da biblioteca. Eu não vejo isso na man page de ld, então não sei se isso é realmente suportado.

Outra ideia: procure usar um sistema de contêineres como o docker. Isso é semelhante a uma máquina virtual leve, na qual você pode ter sua própria visualização de sistema de arquivos separada do host e pode simplesmente colocar as versões de biblioteca desejadas no contêiner. Ele também funciona para outras coisas além de bibliotecas compartilhadas, como as versões JVM / python e assim por diante. Eu mesmo não usei muito, mas meu entendimento é que ele é adequado para esses tipos de aplicativos.

    
por 13.12.2015 / 17:59