Uporaba ukaza "ldd" v Linuxu

Ukaz ldd lahko uporabite za prikaz skupnih knjižnic, ki jih zahteva kateri koli program.

To je uporabno za delo, ko je manjkajoča odvisnost, in se lahko uporabi za seznam manjkajočih funkcij in predmetov.

ldd Command Syntax

To je pravilna sintaksa pri uporabi ukaza ldd:

ldd [OPTION] ... DATOTEK ...

Tukaj so na voljo ukazna stikala ldd, ki jih lahko vstavite v točko [OPTION] v zgornjem ukazu:

-help natisnite to pomoč in zapustite informacije o različici tiskanja v različici in izhod -d, -data-relocs preselitve podatkov procesa -r, -funkcijski reloki podatkov procesa in premestitev funkcije -u, - neuporabljeni tisk neuporabljene neposredne odvisnosti -v, - preverite vse informacije

Kako uporabljati ldd ukaz

Z ukazom ldd lahko pridobite več informacij iz ukaza ldd:

ldd -v / pot / do / program / izvedljiv

Izhod prikazuje podatke o različici, poti in naslove v knjižnicah v skupni rabi, na primer:

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

Če datoteka SO SO sploh ne obstaja, lahko najdete manjkajoče knjižnice z naslednjim ukazom:

ldd -d pot / do / program

Rezultat je podoben naslednjemu:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​ni bilo najdeno libc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)

Pomembno: Nikoli ne zaženite ukaza ldd proti nezaupnemu programu, ker bi ga lahko ukaz dejansko izvršil. To je varnejša alternativa, ki prikazuje samo neposredne odvisnosti in ne celotno drevo odvisnosti: objdump -p / path / to / program | grep POTREBNO .

Kako najti pot do aplikacije

Določiti morate celotno pot do aplikacije, če želite ugotoviti, ali so njegove odvisnosti ldd, kar lahko storite na več načinov.

Tako na primer najdete pot do Firefoxa :

našli / -name firefox

Problem z ukazom find pa je, da ne bo samo seznam izvršljiv, temveč povsod, kjer se Firefox nahaja, na primer:

Ta pristop je malo presežen in morda boste morali uporabiti ukaz sudo za povišanje vaših privilegijev, drugače boste verjetno dobili veliko napak, dovoljenih za dovoljenje.

Namesto tega je namesto ukaza whereis veliko lažje najti pot aplikacije:

whereis firefox

Tokrat bo izhod lahko videti takole:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Vse kar morate storiti, da najdete skupne knjižnice za Firefox je vnesite ta ukaz:

ldd / usr / bin / firefox

Izhod iz ukaza bo nekaj takega:

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 je ime knjižnice, številko hexa pa je naslov, kamor bo knjižnica naložena v pomnilnik.

V mnogih drugih vrsticah boste opazili, da simbol => sledi pot. To je pot do fizične binarnosti; številka hexa je naslov, kjer bo knjižnica naložena.