Käyttämällä ldd-komentoa Linuxissa

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 tiedot

Miten ldd-komentoa käytetään?

Voit käyttää seuraavaa komentoa saadaksesi lisätietoja mistä tahansa ldd-komennosta:

ldd -v / path / to / program / executable

Tulostus 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 / ohjelmaan

Lä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 firefox

Etsi-komennon ongelma on kuitenkin se, että se ei ainoastaan ​​luetteloi suoritustiedostoa vaan kaikkialla, jossa Firefox sijaitsee, kuten:

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 firefox

Tä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 / firefox

Komennon 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.