Em primeiro lugar, as variáveis de ambiente foram desenvolvidas para o Unix, mas agora o Windows e o Linux também têm essas variáveis. Quando algum processo é criado, ele herda uma cópia do ambiente de tempo de execução de seus pais, com exceção das mudanças explícitas feitas pelo pai quando o filho é criado por padrão. Um par de nome/valor compõe uma variável de ambiente, e qualquer número deles pode ser gerado e referenciado a qualquer momento. Geralmente as letras maiúsculas são usadas ao nomear variáveis do ambiente. Isso ajuda a diferenciar variáveis de ambiente de outros tipos de nomes no código de programação em geral.No sistema operacional UNIX, as variáveis de ambiente são sensíveis ao caso, mas não no DOS, OS/2 ou Windows.
LD_Library também é uma variável de ambiente do sistema operacional UNIX/Linux; Neste artigo, discutiremos essa variável de ambiente em detalhes.
Uso da variável ld_library_path
No sistema UNIX/Linux Ld_library_path Para informar o Dynamic Link Loader, um pequeno programa que começa todos os seus aplicativos, para determinar onde procurar bibliotecas compartilhadas dinâmicas com as quais um aplicativo estava vinculado. Um cólon (:) separa uma lista de diretórios, e esta lista é verificada antes mesmo de caminho/caminho de pesquisa interno e locais convencionais como (/lib,/usr/lib…).
Alguns outros usos de ld_library_path são:
Problema com ld_library_path
É muito útil até você tentar usá -lo para resolver seus problemas. Essa linha parece estranha, mas é isso que realmente acontece quando você tenta aplicá -la em um ambiente de usuário/sistema, o cenário fica pior e todas!
Alguns problemas enfrentados usando ld_library_path são:
Segurança: Os diretórios ld_library_path são verificados primeiro, antes de sua localização real. Essa abordagem pode ser usada por um indivíduo malicioso para forçar seu aplicativo a executar uma versão maliciosa de uma biblioteca compartilhada. Uma das razões pelas quais os executáveis setuid/setgid ignoram essa variável é devido a isso.
Desempenho: O carregador de link precisa procurar em todos os diretórios fornecidos até encontrar bibliotecas compartilhadas (vinculadas ao aplicativo). Consequentemente, fará com que várias chamadas do sistema se abram e façam com que elas caísão com a ENOENT "nenhum arquivo ou diretório". Se o caminho especificado tiver muitos diretórios, levará muito tempo e você poderá verificar isso no horário de inicialização do seu aplicativo. Como resultado, isso fará com que todo o sistema desacelere.
Inconsistência: A questão mais prevalente causada pelo uso de ld_library_path é inconsistência. Ld_library_path obriga um programa para carregar uma biblioteca compartilhada na qual não estava vinculada, o que é certamente incompatível com a versão original. Isso pode ser altamente evidente, como quando o aplicativo trava, ou pode resultar em resultados incorretos se a biblioteca retirada não corresponder exatamente à funcionalidade da versão original. Isso será difícil depurar o último, especialmente.
Solução
A melhor solução é quanto menos você o usa, menos problemas você enfrentará. De fato, tente evitar o uso de ld_library_path:
Como evitar ld_library_path:
Forneça localização correta da biblioteca compartilhada: Quando você compila seu aplicativo, você precisa fornecer a localização exata de bibliotecas compartilhadas e especificar o caminho na opção Linker '-rpath' para informar o vinculador para incluí-las no RunPath do seu executável ou você pode usar a variável ld_run_path para especificar vários caminhos
Ferramenta para corrigir o problema:Para corrigir/alterar o RunPath de um executável binário, existem programas disponíveis, como Chrpath Under Linux. O problema dessa maneira é que o espaço executável que carrega essas informações (eu.e. a string do caminho) não pode ser expandida, eu.e. você só pode reescrever um caminho existente.
Não coloque ld_library_path no perfil de usuário: Ao colocar ld_library_path no perfil de usuário, você criará problemas para si mesmo, então evite isso.
Não coloque ld_library_path no perfil do sistema: Alguns ISVs fornecem software que insere automaticamente as configurações globais de caminho da biblioteca LD nos perfis do sistema durante a instalação, ou mesmo levam ao usuário a fazê -lo. Basta dizer não! Tente lidar com o problema de outra maneira, por exemplo, escrevendo um script de wrapper ou diga ao fornecedor para corrigi -lo.
Ld_library_path é útil se usado para três usos mencionados na parte de uso, mas tente usá -lo o mínimo possível para se proteger de ter problemas.
Conclusão
Ld_library_path é uma variável ambiental usada em sistemas Linux/Unix. É usado para dizer aos carregadores dinâmicos de link onde procurar bibliotecas compartilhadas para aplicativos específicos. É útil até que você não mexa com isso. É melhor evitar o uso de ld_library_path e usar alternativas. Neste artigo, o uso da variável ambiental ld_library_path é discutido e, em seguida. Depois de ler este artigo, você conhecerá os prós e contras da variável ld_library_path.