Utilitzar el ldd comanda per mostrar les biblioteques compartides requerides per un programa determinat, útil per treballar quan hi ha una dependència perduda. L'ordre també enumera les funcions i objectes que falten.
Sintaxi de comandaments ldd
Observeu la sintaxi correcta de la comanda ldd per evitar errors:
ldd OPCIÓ … FITXER …
Utilitzeu un o més dels commutadors de comandaments de ldd disponibles, inserits a la OPCIÓ lloc al comandament anterior: --help | imprimeix aquesta ajuda i surt --version | imprimeix la informació de la versió i surt -d, --data-relocs | deslocalització de dades del procés -r, --function-relocs | dades de processos i deslocalitzacions de funcions -u, --unused | imprimeix dependències directes no utilitzades -v, --verbose | imprimeix tota la informació Executeu l'ordre següent per obtenir més informació sobre un programa: $ ldd -v / path / to / program / executable
La sortida mostra la informació de la versió, així com les rutes i adreces a les biblioteques compartides, d'aquesta manera: $ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Si el fitxer SO no existeix, podeu trobar les biblioteques que falten utilitzant el següent comandament: $ ldd -d ruta / a / programa
La sortida és similar a la següent: linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => no foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)
Mai executeu la comanda ldd contra un programa que no sigui de confiança, ja que el ldd podria executar-lo. En lloc d'això, utilitzeu una alternativa més segura que mostri només les dependències directes i no tot l'arbre de dependència: $ objdump -p / path / to / program | grep NEEDED Heu de proporcionar la ruta completa a una aplicació si voleu trobar les seves dependències amb LD, que podeu fer de diverses maneres. Per exemple, així és com trobaria la ruta a Firefox: $ find / -name firefox
El problema amb l'ordre find, però, és que no només mostrarà l'executable, sinó a tot arreu on es troba Firefox, com aquest: Aquest enfocament és una mica excessiu i és possible que hagueu d'utilitzar l'ordre sudo per elevar els vostres privilegis; de lo contrario, és probable que obtingueu molts errors denegats pel permís. En canvi, és molt més fàcil utilitzar la comanda whereis per trobar la ruta d'una aplicació: $ on és Firefox
Aquesta vegada, la sortida podria tenir aquest aspecte: / usr / bin / firefox / etc / firefox / usr / lib / firefox Tot el que heu de fer ara per trobar les biblioteques compartides per a Firefox és escriure el següent comandament: $ ldd / usr / bin / firefox
La sortida de la comanda serà una cosa així: 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 és el nom de la biblioteca i el número hexadecimal és l'adreça on es carregarà la biblioteca a la memòria. Notaràs en moltes de les altres línies que el símbol => és seguit d'una ruta d'accés. Aquest és el camí al binari físic; el nombre hexadecimal és l'adreça on es carregarà la biblioteca. Com s'utilitza el comandament ldd
Com trobar el camí d'una aplicació













