Como este programa vincula estaticamente a um .so em um caminho não padrão

0

Um programa que estou usando só pode ser instalado com um instalador personalizado (Demonstração do IDA Freeware). Eu tenho instalado no meu diretório home, tudo funciona bem.

Agora notei que ao verificar o programa com o ldd: ele vem com suas próprias bibliotecas Qt, que são locais como bibliotecas compartilhadas em seu diretório de instalação (portanto, o mesmo diretório reside em seu arquivo executável principal, não em / usr / lib ou similar ).

$ ldd ida64
    linux-vdso.so.1 =>  (0x00007ffec5fb9000)
    libida64.so => /home/asdf/idafree-7.0/./libida64.so 
    libQt5PrintSupport.so.5 => /home/asdf/idafree-7.0/./libQt5PrintSupport.so.5
    libQt5Widgets.so.5 => /home/asdf/idafree-7.0/./libQt5Widgets.so.5 
....

(install dir = /home/asdf/idafree-7.0 /)

Agora eu me pergunto: como isso acontece? Eu executo o programa diretamente sem qualquer mágica LD_LIB_PATH.

    
por bernd feinman 13.05.2018 / 21:44

1 resposta

0

Explicação simples de como executar um executável que exija um LD_LIBRARY_PATH exclusivo, por exemplo um caminho para libs no diretório atual /:

Curto: export LD_LIBRARY_PATH=. em que o ponto (. ) significa 'o diretório atual'

Geralmente também o sistema LD_LIBRARY_PATH (terá que) ser incluído: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

"Codificao dura" de, e. ida64 : A função no executável a ser executada primeiro é a configuração do LD_LIBRARY_PATH exclusivo. ... Outro exemplo: firefox .

    
por Knud Larsen 14.05.2018 / 13:55