como uma expressão que contém LD_DEBUG é processada?

2

Um exemplo de uso de LD_DEBUG é assim:

LD_DEBUG=libs applicationName

LD_DEBUG = libs é apenas uma atribuição - então como funciona (imprime resultado) no bash?

    
por Irbis 22.09.2015 / 15:29

2 respostas

2

LD_DEBUG nesse contexto é uma variável de ambiente à qual você atribuiu o valor de libs . Isso por si só não faz nada, exceto colocar LD_DEBUG no ambiente do comando que você acabou de iniciar.

Quando você inicia um executável vinculado dinamicamente, uma das primeiras coisas que acontecem é o vinculador dinâmico ld.so(8) que vincula tempo de execução e resolução de símbolo. O código no vinculador dinâmico que faz isso pode ler variáveis de ambiente, assim como qualquer código compilado. Este programa lê esta variável de ambiente e muitos outros e modifica seu comportamento com base neles. A página man detalha todas as variáveis de ambiente que afetam o vinculador dinâmico.

    
por 22.09.2015 / 16:33
1

LD_DEBUG é avaliado em ld.so.1 (o vinculador dinâmico que é chamado do binário ELF)

Verifique a página man do vinculador dinâmico em:

link

Nada é feito no shell, tudo é feito "pelo" binário executado.

BTW: o comando ldd não faz nada especial, apenas define algumas variáveis LD_ * e depois tenta iniciar o comando. Se nenhuma opção for especificada, o ldd define apenas LD_TRACE_LOADED_OBJECTS_[AE] , consulte

link

e o código fonte relacionado.

    
por 22.09.2015 / 16:21