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
Respostas:
Você também pode fazer:
Mas isso provavelmente não faz o que você deseja. Ele mostra as bibliotecas
executable
vinculadas, mas não todas as bibliotecas necessárias (uma biblioteca pode exigir outra biblioteca).fonte
A saída de
file
diz " estaticamente vinculada ".ldd
funciona apenas em executáveis vinculados dinamicamente.(Tecnicamente, tudo o que o Linux
ldd
faz é 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.fonte