É normal que a variável LD_LIBRARY_PATH esteja ausente de um ambiente?

14

Eu descobri por acaso que no Debian Jessie não há LD_LIBRARY_PATH (para ser exato printenv | grep LD não mostra nada relacionado ao linker e echo "$LD_LIBRARY_PATH" também não mostra nada).

Este é o caso do emulador de terminal x ( que pode apagá-lo devido ao setgid ), bem como no terminal básico ( Ctrl + Alt + F1 ).

Eu sei que LD_LIBRARY_PATH pode ser considerado ruim para que o Debian possa bloqueá-lo de alguma forma, mas, por outro Por outro lado, há alguns arquivos em /etc/ld.so.conf.d/ que contêm alguns diretórios a serem adicionados a LD_LIBRARY_PATH . Nenhum dos meus arquivos rc (que eu conheço) mexem com LD_LIBRARY_PATH .

Por que não vejo uma variável LD_LIBRARY_PATH ?

    
por calavera.info 26.09.2017 / 13:04

1 resposta

22

Sim, é normal que você não tenha nenhum LD_LIBRARY_PATH explícito. Leia também ldconfig (8) e ld-linux (8) e sobre o rpath . Observe que ldconfig atualiza /etc/ld.so.cache , não o LD_LIBRARY_PATH . Às vezes, você definirá o rpath de um executável explicitamente com -Wl,-rpath, diretório passado para gcc no momento do link.

Se você precisar de um LD_LIBRARY_PATH (mas provavelmente não deve), defina-o por conta própria (por exemplo, em ~/.bashrc ).

Se você precisar de configurações de todo o sistema, você pode, por exemplo, considere adicionar /usr/local/lib/ em /etc/ld.so.conf e executar ldconfig após a instalação de todas as bibliotecas.

AFAIK $LD_LIBRARY_PATH é usado apenas pelo vinculador dinâmico ld-linux.so (e por dlopen ( 3) que o utiliza) depois de execve (2) . Veja também ldd (1) .

Leia o Como escrever bibliotecas compartilhadas do Drepper para saber mais.

    
por 26.09.2017 / 13:06