Ldd-komentoa voidaan käyttää näyttämään kaikille tietylle ohjelmalle vaaditut jaetut kirjastot.
Tämä on hyödyllistä selvittää, kun on puuttuva riippuvuus ja sitä voidaan käyttää puuttuvien toimintojen ja objektien luetteloon.
ldd komentosyntaksi
Tämä on oikea syntaksi, kun käytetään ldd-komentoa:
ldd [OPTION] ... TIEDOSTO ...Tässä ovat käytettävissä olevat ldd-komentokytkimet, jotka voidaan lisätä [OPTION] -paikkaan yllä olevassa komennossa:
- help print this help ja exit --version tulostusversion tiedot ja exit -d, - data-relocs-prosessidatan siirrot -r, --function-relocs-prosessitiedot ja -toimintojen siirrot -u, - unused print unused direct dependencies -v, --verbose tulosta kaikki tiedotMiten ldd-komentoa käytetään?
Voit käyttää seuraavaa komentoa saadaksesi lisätietoja mistä tahansa ldd-komennosta:
ldd -v / path / to / program / executableTulostus näyttää versiotiedot sekä polut ja osoitteet jaettuihin kirjastoihin, kuten:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Jos SO-tiedostoa ei ole lainkaan, löytyvät puuttuvat kirjastot käyttämällä seuraavaa komentoa:
ldd-d polku / ohjelmaanLähtö on samanlainen kuin seuraavat:
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)Tärkeää: Älä koskaan suorita ldd-komentoa epäluotettavalla ohjelmalla, koska komento saattaa itse suorittaa sen. Tämä on turvallisempi vaihtoehto, joka osoittaa vain suorien riippuvuuksien eikä koko riippuvuuspuun: objdump -p / path / to / program | grep TARVITSE .
Miten löytää polku sovellukseen
Sinun on annettava hakemuksen koko polku, jos haluat löytää sen riippuvuudet ldd: llä, jota voit tehdä useilla eri tavoilla.
Näin esimerkiksi löytää Firefoxin polku:
Etsi / -name firefoxEtsi-komennon ongelma on kuitenkin se, että se ei ainoastaan luetteloi suoritustiedostoa vaan kaikkialla, jossa Firefox sijaitsee, kuten:
- /etc/skel/.mozilla/firefox
- / Home // cache / mozilla / firefox
- /home//.mozilla/firefox
- / Usr / bin / Firefox
- / Usr / lib / Firefox
- / Usr / lib / Firefox / Firefox
Tämä lähestymistapa on hieman ylikuormitusta ja saatat joutua käyttämään sudo-komentoa nostaa oikeuksiasi, muuten saat todennäköisesti paljon lupaa kieltäytyi virheistä.
Sen sijaan on paljon helpompaa käyttää whereis-komentoa hakemiston polun etsimiseen:
jossa on firefoxTällä kertaa tulos voi näyttää tältä:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Sinun tarvitsee vain etsiä jaetut kirjastot Firefoxille, kirjoita seuraava komento:
ldd / usr / bin / firefoxKomennon tuotos tulee olemaan näin:
linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc ++. niin.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 on kirjaston nimi ja hex-numero on osoite, johon kirjasto ladataan muistiin.
Huomaat monissa muissa riveissä, että => -merkkiä seuraa polku. Tämä on polku fyysiseen binääriin; Hex-numero on osoite, johon kirjasto ladataan.