Skip to main content

Encontre bibliotecas compartilhadas de um programa com o comando "ldd"

COMO USAR 10 COMANDOS NO MINECRAFT POCKET EDITION 0.16.0 (MCPE - MINECRAFT PE) (Junho 2026)

COMO USAR 10 COMANDOS NO MINECRAFT POCKET EDITION 0.16.0 (MCPE - MINECRAFT PE) (Junho 2026)
Anonim

Use o ldd comando para mostrar as bibliotecas compartilhadas requeridas por qualquer programa - útil para trabalhar quando há uma dependência ausente. O comando também lista funções e objetos ausentes.

Sintaxe de Comandos do ldd

Observe a sintaxe apropriada para o comando ldd para evitar erros:

ldd OPÇÃO … ARQUIVO …

Use um ou mais dos switches de comando ldd disponíveis, inseridos no OPÇÃO spot no comando acima:

--help | imprima esta ajuda e saia --version | imprimir informações de versão e sair -d, --data-relocs | relocações de dados de processo -r, --função-relocs | dados de processo e realocações de funções -u, - não utilizado | imprimir dependências diretas não utilizadas -v, --verbose | imprimir todas as informações

Como usar o comando ldd

Execute o seguinte comando para obter mais informações sobre um programa:

$ ldd -v / path / to / program / executable

A saída mostra informações sobre a versão, assim como os caminhos e endereços para as bibliotecas compartilhadas, assim:

$ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

Se o arquivo SO não existir, você poderá encontrar as bibliotecas ausentes usando o seguinte comando:

$ ldd -d caminho / para / programa

A saída é semelhante à seguinte:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​não foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Nunca execute o comando ldd em um programa não confiável porque o ldd pode realmente executá-lo. Em vez disso, use uma alternativa mais segura que mostre apenas as dependências diretas e não toda a árvore de dependências:

$ objdump -p / caminho / para / programa | grep NEEDED

Como encontrar o caminho para um aplicativo

Você precisa fornecer o caminho completo para um aplicativo se quiser encontrar suas dependências com o ldd, o que pode ser feito de várias maneiras.

Por exemplo, é assim que você encontraria o caminho para o Firefox:

$ find / -name firefox

O problema com o comando find, no entanto, é que ele não listará apenas o executável, mas em todos os lugares em que o Firefox estiver localizado, assim:

  • /etc/skel/.mozilla/firefox
  • / home // cache / mozilla / firefox
  • /home//.mozilla/firefox
  • / usr / bin / Firefox
  • / usr / lib / Firefox
  • / usr / lib / Firefox / Firefox

Essa abordagem é um pouco exagerada e você pode precisar usar o comando sudo para elevar seus privilégios, caso contrário, você receberá muitos erros de permissão negada.

É muito mais fácil usar o comando whereis para encontrar o caminho de um aplicativo:

$ whereis firefox

Desta vez, a saída pode ser assim:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Tudo que você precisa fazer agora para encontrar as bibliotecas compartilhadas para o Firefox é digitar o seguinte comando:

$ ldd / usr / bin / firefox

A saída do comando será algo assim:

linux-vdso.so.1 (0x00007ffff8364000)libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)

Linux-vdso.so.1 é o nome da biblioteca e o número hexadecimal é o endereço no qual a biblioteca será carregada na memória.

Você notará em muitas das outras linhas que o símbolo => é seguido por um caminho. Este é o caminho para o binário físico; o número hexadecimal é o endereço onde a biblioteca será carregada.