Korišćenje naredbe "ldd" na Linuxu

Ldd komanda se može koristiti da vam pokaže dijeljene biblioteke potrebne za bilo koji program.

Ovo je korisno za rad kada postoji nedostatak zavisnosti i može se koristiti za popis nestalih funkcija i objekata.

ldd Command Syntax

Ovo je ispravna sintaksa kada koristite ldd naredbu:

ldd [OPTION] ... FILE ...

Ovde su dostupni ldd komandni prekidači koji se mogu ubaciti u mjesto [OPTION] u gornjoj komandi:

-help odštampati ovu pomoć i izaći - informacije o verziji za štampu i izlaz -d, -data-relocs relacije podataka procesa -r, -funkcionalni-relokacioni podaci procesa i relokacije funkcija -u, - neupotrebljeni ispis neiskorištene direktne zavisnosti -v, --verite sve informacije

Kako koristiti ldd komandu

Možete koristiti sljedeću naredbu da biste dobili više informacija iz bilo koje komande ldd:

ldd -v / put / do / program / izvršni

Izlaz prikazuje informacije o verziji, kao i puteve i adrese u deljenim bibliotekama, ovako:

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

Ako SO datoteka uopće ne postoji, možete pronaći nedostajuće biblioteke koristeći sljedeću naredbu:

ldd -d put / do / program

Izlaz je sličan sledećem:

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

Važno: Nikada ne pokrećite ldd komandu protiv nepouzdanog programa, jer bi komanda mogla da je izvrši. Ovo je sigurnija alternativa koja pokazuje samo direktne zavisnosti, a ne cijelo zavisno drvo: objdump -p / path / to / program | grep NEEDED .

Kako pronaći put do aplikacije

Morate osigurati punu putanju do neke aplikacije ako želite pronaći njegove zavisnosti sa ldd-om, što možete učiniti na više načina.

Na primjer, ovako ćete pronaći put do Firefoxa :

pronađi / -name firefox

Problem sa naredbom za pronalazak je , međutim, da će ne samo popisati izvršnu datoteku, već svugdje gdje se Firefox nalazi, ovako:

Ovaj pristup je malo prekomjeran i možda ćete morati da koristite komandu sudo da biste podigli svoje privilegije, u suprotnom ćete verovatno dobiti puno grešaka koje dozvoljavate dozvolu.

Umjesto toga, mnogo je lakše koristiti komandu whereis kako bi pronašla putanju aplikacije:

whereis firefox

Ovog puta izlaz bi mogao izgledati ovako:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Sve što sada treba da uradite da pronađete deljene biblioteke za Firefox je ukucati sljedeću naredbu:

ldd / usr / bin / firefox

Izlaz iz naredbe biće nešto ovako:

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 biblioteke, a heks broj je adresa na kojoj će se biblioteka učitati u memoriji.

Na mnogim drugim linijama ćete primetiti da simbol => sledi putanja. Ovo je put do fizičke binarne; broj hexa je adresa u kojoj će biblioteka biti učitana.