Encontre as bibliotecas compartilhadas de um programa com o comando 'ldd'
Use o ldd comando para mostrar as bibliotecas compartilhadas exigidas por um determinado programa. O comando ldd é útil para resolver quando há uma dependência ausente. o comando também lista funções e objetos ausentes.
Sintaxe do comando ldd
Observe o adequado sintaxe para o comando ldd para evitar erros:
ldd [OPÇÃO]... ARQUIVO...
Use uma ou mais das opções de comando ldd disponíveis, inseridas no local [OPÇÃO] no comando acima:
- --help: Imprime esta ajuda e sai.
- --version: Imprime informações sobre a versão e sai.
- -d, --data-relocs: Processa realocações de dados.
- -r, --function-relocs: Processar dados e realocações de função.
- -u, --unused: Imprime dependências diretas não utilizadas.
- -v, --verbose: Imprime todas as informações.
Como usar o comando ldd
Execute o seguinte comando para obter mais informações sobre um programa:
ldd -v / caminho / para / programa / executável
A saída mostra informações de versão, bem como os caminhos e endereços para as bibliotecas compartilhadas, como este:
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ê pode encontrar as bibliotecas ausentes usando o seguinte comando:
ldd -d caminho / para / programa
O resultado é semelhante ao seguinte:
linux-vdso.so.1 (0x00007ffc2936b000)
/home/gary/demo/garylib.so => not 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 comando ldd pode 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 NECESSÁRIO

Como encontrar o caminho para um aplicativo
Você deve fornecer o caminho completo para um aplicativo se quiser localizar suas dependências com o ldd, o que pode ser feito de várias maneiras.
Por exemplo, é assim que encontrar o caminho para Raposa de fogo:
find / -name firefox
O problema com o encontrar comando, no entanto, é que ele lista o executável e todos os lugares onde o Firefox está localizado, assim:
/etc/skel/.mozilla/firefox
/home//cache/mozilla/firefox
/home//.mozilla/firefox
/usr/bin/Firefox
/usr/lib/Firefox
/usr/lib/Firefox/Firefox
Esta abordagem é um pouco exagerada e você pode precisar usar o comando sudo para elevar seus privilégios, caso contrário, você provavelmente obterá erros de permissão negada do homem.
Em vez disso, é mais fácil usar o onde está o comando para encontrar o caminho de um aplicativo:
onde está o firefox
Desta vez, a saída pode ser assim:
/usr/bin/firefox
/etc/firefox
/usr/lib/firefox

Em seguida, para encontrar as bibliotecas compartilhadas para Firefox, digite 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 onde a biblioteca é carregada na memória.
Em muitas linhas, o => 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 é carregada.