Skip to main content

Etsi ohjelman yhteiset kirjastot "ldd" -komennolla

주간아이돌 - (Weekly Idol EP.228) 트와이스 Twice 'K-POP' Cover Dance (Huhtikuu 2025)

주간아이돌 - (Weekly Idol EP.228) 트와이스 Twice 'K-POP' Cover Dance (Huhtikuu 2025)
Anonim

Käytä LDD komento näyttää minkä tahansa ohjelman edellyttämät jaetut kirjastot - hyödyllisiä käsitellä, kun puuttuva riippuvuus puuttuu. Komennossa luetellaan myös puuttuvat toiminnot ja objektit.

ldd komentosyntaksi

Huomioi ldd-komennon asianmukainen syntaksi virheiden välttämiseksi:

ldd OPTION … TIEDOSTO …

Käytä yhtä tai useampaa käytettävissä olevaa ldd-komentokytkintä VAIHTOEHTO paikalla yllä olevassa komennossa:

- helpota tulosta tämä ohje ja poistu --versio | tulostaa version tiedot ja poistua -d, --data-relocs | prosessidatan siirrot -r, --funktio-relocs | prosessidatan ja toiminnan siirtämisen -u, --unused | tulostaa käyttämättömät suorat riippuvuudet -v, --verbose | tulosta kaikki tiedot

Miten ldd-komentoa käytetään?

Suorita seuraava komento saadaksesi lisätietoja ohjelmasta:

$ 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)

Älä koskaan aja ldd-komentoa epäluottamukselliseen ohjelmaan, koska ldd saattaa itse suorittaa sen. Käytä sen sijaan turvallisempaa vaihtoehtoa, joka näyttää vain suorat riippuvuudet eikä koko riippuvuuspuu:

$ 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 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:

  • /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äviä virheitä.

Sen sijaan on paljon helpompaa käyttää whereis-komentoa hakemiston polun etsimiseen:

$ joka 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.