Otsige üles programmi jagatud teegid käsuga ldd

Kasuta ldd käsk mis tahes programmi jaoks vajalike jagatud teekide kuvamiseks. Käsk ldd on kasulik puuduva sõltuvuse väljaselgitamiseks. The käsk loetleb ka puuduvad funktsioonid ja objektid.

ldd käsu süntaks

Jälgige õiget süntaks ldd käsu jaoks vigade vältimiseks:

ldd [VALIK]... FAIL...

Kasutage ühte või mitut saadaolevatest ldd-käsulülititest, mis on sisestatud ülaloleva käsu [OPTION]-punkti:

  • --help: printige see spikker ja väljuge.
  • --version: versiooniteabe printimine ja väljumine.
  • -d, --data-relocs: töötleb andmete ümberpaigutamist.
  • -r, --function-relocs: töötleb andmeid ja funktsioonide ümberpaigutamist.
  • -u, --unused: prindib kasutamata otsesed sõltuvused.
  • -v, --verbose: kogu teabe printimine.

Kuidas kasutada käsku ldd

Programmi kohta lisateabe saamiseks käivitage järgmine käsk:

ldd -v /tee/programmi/käivitatavasse

Väljund näitab versiooniteavet, samuti jagatud teekide teid ja aadresse, näiteks järgmiselt:

libshared.so
linux-vdso.so.1 => (0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Linuxi ldd käsk

Kui SO-faili pole üldse olemas, leiate puuduvad teegid järgmise käsu abil:

ldd -d tee/to/programmi

Väljund on sarnane järgmisega:

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)
Linuxi ldd käsk puudub

Ärge kunagi käivitage käsku ldd ebausaldusväärse programmi vastu, kuna käsk ldd võib selle käivitada. Selle asemel kasutage ohutumat alternatiivi, mis näitab ainult otseseid sõltuvusi, mitte kogu sõltuvuspuud:

objdump -p /tee/programmi | grep VAJALIK
Linuxi objdump ldd alternatiiv

Kuidas leida tee rakenduseni

Peate andma rakenduse täieliku tee, kui soovite leida selle sõltuvusi ldd-ga, mida saate teha mitmel viisil.

Näiteks nii saab leida tee Firefox:

leida / -nimi firefox

Probleem seoses leidke käskKuid see loetleb käivitatava faili ja kõikjal, kus Firefox asub, näiteks järgmiselt:

/etc/skel/.mozilla/firefox
/home//cache/mozilla/firefox
/home//.mozilla/firefox
/usr/bin/Firefox
/usr/lib/Firefox
/usr/lib/Firefox/Firefox

See lähenemine on pisut liialdatud ja võib-olla peate kasutama sudo käsk oma privileege tõsta, vastasel juhul saate tõenäoliselt meeste lubadeta vigu.

Selle asemel on seda lihtsam kasutada kus on käsk rakenduse tee leidmiseks:

kus on firefox

Seekord võib väljund välja näha selline:

/usr/bin/firefox
/etc/firefox
/usr/lib/firefox
Linux whereis käsk

Seejärel sisestage Firefoxi jagatud teekide leidmiseks järgmine käsk:

ldd /usr/bin/firefox

Käsu väljund on umbes selline:

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 on teegi nimi ja kuueteistkümnendnumber on aadress, kuhu teek mällu laaditakse.

Paljudel liinidel on => sümbolile järgneb tee. See on tee füüsilise binaari juurde. Kuueteistkümnendnumber on aadress, kuhu raamatukogu laaditakse.