Linuxi käsu "ldd" kasutamine

Ldd-käsku saab kasutada selleks, et näidata teile ühiskasutusse kuuluvaid teeke, mida iga konkreetne programm vajab.

See on kasulik töötamiseks, kui puudub puuduv sõltuvus ning seda saab kasutada puuduvate funktsioonide ja objektide loendamiseks.

ldd käsu süntaks

See on õige süntaks, kui kasutate ldd-käsku:

ldd [OPTION] ... FILE ...

Siin on käskluslukud, mida saab sisestada eelmise käsu [OPTION] kohale:

--euge abi selle printimiseks ja väljuge --versioon printimisversiooni teavet ja väljumiseks -d, -data-relocs protsessi andmete ümberpaigutamine -r, -function-relocs protsessi andmed ja funktsioonide ümberpaigutamine -u, - unused print unused direct dependencies -v, --verbose prindi kogu teave

Kuidas kasutada ldd käsku

Võite kasutada järgmist käsu, et saada lisateavet mis tahes ldd käsklusest:

ldd -v / path / to / program / executable

Väljund näitab versiooniteavet, samuti jagatud teekide ja aadresside asukohti, näiteks järgmist:

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

Kui SO-faili üldse ei eksisteeri, võite leida puuduvaid raamatukogusid, kasutades järgmist käsku:

ldd-d tee / to / program

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)

NB! Ärge kunagi käivitage ldd-käskt ebausaldusväärse programmi vastu, kuna käsk võib seda tegelikult käivitada. See on turvalisem alternatiiv, mis näitab vaid otseseid sõltuvusi, mitte kogu sõltuvuspuud: objdump -p / path / to / program | VAJUTUS .

Kuidas leida teed rakendusele

Rakenduse jaoks tuleb anda täielik tee, kui soovite leida oma sõltuvust ldd-st, mida saate teha mitmel viisil.

Näiteks on see, kuidas leida Firefoxi teed:

lei / -nimi firefox

Kuid otsingu käsu probleemiks on see, et see ei sisalda mitte ainult käivitatavat faili, vaid kõikjal, kus Firefox asub, nagu see:

Selline lähenemine on natuke ülemäärane ja sulle võib-olla peate kasutama sudo käsku, et oma privileege tõsta, muidu võite tõenäoliselt saada palju lubasid eiratud vigu.

Selle asemel on palju lihtsam kasutada rakenduse tee leidmiseks käsku whereis :

kus on firefox

Seekord võib väljund olla selline:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Kõik, mida peate nüüd Firefoxi jagatud teekide leidmiseks tegema, tuleb sisestada järgmine käsk:

ldd / usr / bin / firefox

Käsu väljund on midagi sellist:

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 raamatukogu nimi ja hex-number on aadress, kus raamatukogu laaditakse mällu.

Teid märkate paljude teiste joonte puhul, et => sümbolile järgneb tee. See on füüsilise binaartee tee; hex-number on aadress, kuhu raamatukogu laaditakse.