Skip to main content

Găsiți librăriile partajate ale programului cu comanda "ldd"

Tutorial cum sa dai pm( pe Metin2.ro IRC folosind comanda ceruta -made by colonelu morteni (Iunie 2025)

Tutorial cum sa dai pm( pe Metin2.ro IRC folosind comanda ceruta -made by colonelu morteni (Iunie 2025)
Anonim

Folosește LDD comandă pentru a afișa bibliotecile partajate necesare unui anumit program - util pentru a lucra când există o dependență lipsă. De asemenea, comanda listează funcțiile și obiectele care lipsesc.

ldd Command Sintaxă

Observați sintaxa potrivită pentru comanda ldd pentru a evita erorile:

ldd OPTION … FILE …

Utilizați una sau mai multe dintre comenzile de comandă ldd disponibile, inserate în OPȚIUNE spot în comanda de mai sus:

- ajutor | tipăriți acest ajutor și ieșiți --versiune tipăriți informațiile despre versiuni și ieșiți -d, --data-relocs | procesul de relocare a datelor -r, - funcții-relocări transferul de date și funcții -u, - nefolosit | imprimă dependențe directe neutilizate -v, --verbose | tipăriți toate informațiile

Cum se utilizează comanda ldd

Executați următoarea comandă pentru a obține mai multe informații despre un program:

$ ldd -v / cale / la / program / executabil

Ieș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 / program

Ieșirea este similară cu următoarea:

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)

Nu executați niciodată comanda ldd împotriva unui program de încredere, deoarece ldd ar putea să-l execute. În schimb, utilizați o alternativă mai sigură care arată doar dependențele directe și nu întregul arbore de dependență:

$ objdump -p / calea / spre / 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:

$ find / -name firefox

Problema 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 o mulțime de erori refuzate de permisiune.

În schimb, este mult mai ușor să utilizați comanda whereis pentru a găsi calea unei aplicații:

$ whereis firefox

De 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 / firefox

Ieș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.