Comanda ldd poate fi utilizată pentru a vă arăta bibliotecile partajate necesare unui anumit program.
Acest lucru este util pentru a lucra când există o dependență lipsă și poate fi folosită pentru a lista funcțiile și obiectele care lipsesc.
ldd Command Sintaxă
Aceasta este sintaxa potrivita atunci cand folositi comanda ldd:
ldd [OPTION] ... FILE ...Iată comenzile de comandă ldd disponibile care pot fi inserate în locația [OPTION] din comanda de mai sus:
--help imprima acest ajutor și ieșire - versiunea de imprimare versiunea de imprimare și ieșire -d, --data-relocs proces de relocări de date -r, --function-relocs procesul de relocations de date și de funcții -u, --unless de imprimare dependente dependente neutilizate -v, --verbose imprimă toate informațiileCum se utilizează comanda ldd
Puteți utiliza următoarea comandă pentru a obține mai multe informații din orice comandă ldd:
ldd -v / path / to / program / executabilIeșirea prezintă informații despre versiune, precum și căile și adresele pentru bibliotecile partajate, cum ar fi:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Dacă fișierul SO nu există deloc, puteți găsi librăriile lipsă utilizând următoarea comandă:
ldd -d path / to / programIeșirea este similară cu următoarea:
linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => nu a fost găsitlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)Important: Nu executați niciodată comanda ldd împotriva unui program de încredere, deoarece comanda ar putea să o execute. Aceasta este o alternativă mai sigură care arată doar dependențele directe și nu întregul arbore de dependență: objdump -p / path / to / program | grep NEVOIE .
Cum să găsiți calea către o aplicație
Trebuie să oferiți calea completă la o aplicație dacă doriți să găsiți dependențele sale cu ldd, pe care le puteți face în mai multe moduri.
De exemplu, așa veți găsi calea către Firefox :
găsiți / -name firefoxProblema cu comanda de găsire , totuși, este că nu va lista doar fișierul executabil, ci peste tot unde este localizat Firefox, după cum urmează:
- /etc/skel/.mozilla/firefox
- / Home // cache / mozilla / firefox
- /home//.mozilla/firefox
- / Usr / bin / Firefox
- / Usr / lib / Firefox
- / Usr / lib / Firefox / Firefox
Această abordare este un pic de depășire și este posibil să fie nevoie să utilizați comanda sudo pentru a vă ridica privilegiile, altfel este posibil să obțineți multe erori de permisiune respinse.
În schimb, este mult mai ușor să utilizați comanda whereis pentru a găsi calea unei aplicații:
whereis firefoxDe data aceasta, ieșirea poate arăta astfel:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Tot ce trebuie să faceți acum pentru a găsi bibliotecile partajate pentru Firefox este să tastați următoarea comandă:
ldd / usr / bin / firefoxIeșirea din comandă va fi ceva de genul:
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 este numele bibliotecii iar numărul hexazecimal este adresa unde va fi încărcată biblioteca în memorie.
Veți observa pe multe din celelalte linii că simbolul => este urmat de o cale. Aceasta este calea către binarul fizic; numarul hex este adresa unde se va incarca biblioteca.