Propriedades executáveis ​​binárias do Linux: alternativa ldd?


6

O comando Linux ldd pode mostrar as bibliotecas dinâmicas usadas por um executável. É um script bash. Mas parece ser frágil e não funciona em alguns binários. Existe uma ferramenta alternativa?

No meu exemplo específico, eu posso usar:

% arquivo datab2txt

datab2txt: Executável ELF de 64 bits LSB, x86-64, versão 1 (SYSV), vinculado estaticamente, para GNU / Linux 2.4.0, sem remoção

mas o ldd falha com:

% ldd -v datab2txt

não é um executável dinâmico


O módulo não depende de carregar dinamicamente nenhuma biblioteca. O comando ldd funciona nesse caso.
BillThor

Respostas:


9

Você também pode fazer:

readelf -d executable | grep NEEDED

Mas isso provavelmente não faz o que você deseja. Ele mostra as bibliotecas executablevinculadas, mas não todas as bibliotecas necessárias (uma biblioteca pode exigir outra biblioteca).


também não está imprimindo caminhos para as bibliotecas (como o ldd)
quinta

6

A saída de filediz " estaticamente vinculada ". lddfunciona apenas em executáveis ​​vinculados dinamicamente.

(Tecnicamente, tudo o que o Linux lddfaz é chamar o carregador executável do Linux /lib/ld-linux.so.2, depois de definir uma variável de ambiente. Portanto, deve ser a maneira mais confiável.)

Alguns programas podem estar sendo usados dlopen()para carregar bibliotecas, a fim de evitar que o programa dependa delas. Por exemplo, o Glibc carrega as bibliotecas do NSS dessa maneira porque seus nomes são conhecidos apenas no tempo de execução, não no momento da compilação / vinculação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.