Skip to main content

Pronađite programirane zajedničke knjižnice pomoću naredbe "ldd"

Upotreba Makro-a u Excel-u (Lipanj 2025)

Upotreba Makro-a u Excel-u (Lipanj 2025)
Anonim

Koristiti LDD naredba za prikazivanje zajedničkih biblioteka koje je potreban bilo kojem programu - korisno za izradu kad postoji nestala ovisnost. Naredba također navodi nedostajuće funkcije i objekti.

ldd Sintaksa naredbi

Pratite odgovarajuću sintaksu ldd naredbe kako biste izbjegli pogreške:

ldd OPTION … FILE …

Upotrijebite jednu ili više raspoloživih naredbi za ldd, umetnute u OPCIJA mjesto u gornjoj naredbi:

- pomoć | ispišite ovu pomoć i izađite --verzija | ispisati inačicu i izaći iz verzije -d, --data-relocs | preseljenja procesnih podataka -r, --funkcija-relocs | procesnih podataka i premještanja funkcija -u, --unused | ispisati neiskorištene izravne zavisnosti -v, --verbose | ispišite sve podatke

Kako koristiti ldd naredbu

Izvršite sljedeću naredbu da biste dobili više informacija o programu:

$ ldd -v / put / u / program / izvršnu datoteku

Izlaz prikazuje informacije o verziji, kao i putove i adrese u dijeljene biblioteke, 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, knjižnice koje nedostaju možete pronaći pomoću sljedeće naredbe:

$ ldd -d put / u / program

Izlaz je sličan sljedećem:

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

Nikad nemojte pokrenuti ldd naredbu protiv nepouzdanog programa jer ga ldd zapravo može izvršiti. Umjesto toga upotrijebite sigurniju alternativu koja prikazuje samo izravne zavisnosti, a ne cijelo stablo ovisnosti:

$ objdump -p / put / to / program | POTREBAN

Kako pronaći putanju aplikaciji

Morate osigurati puni put do aplikacije ako želite pronaći svoje ovisnosti s ldd, što možete učiniti na nekoliko načina.

Na primjer, na taj ćete način pronaći put do Firefoxa:

$ pronađi / -name firefox

Problem s naredbom za pronalaženje je, međutim, da neće samo popisati izvršnu već i svugdje gdje se nalazi Firefox, ovako:

  • /etc/skel/.mozilla/firefox
  • / Home // cache / Mozilla / Firefox
  • /home//.mozilla/firefox
  • / Usr / bin / Firefox
  • / Usr / lib / Firefox
  • / Usr / lib / Firefox / Firefox

Ovaj je pristup malo prekoračenja i možda ćete morati koristiti sudo naredbu da podignete svoje privilegije, inače ćete vjerojatno dobiti puno pogrešaka kojima se zabranjuje dopuštanje.

Umjesto toga je mnogo lakše koristiti naredbu whereis da pronađe put programa:

$ gdje je krijesnica

Ovaj put izlaz može izgledati ovako:

/ Usr / bin / krijesnica

/ Etc / krijesnica

/ Usr / lib / krijesnica

Sve što morate učiniti da biste pronašli zajedničke knjižnice za Firefox upišite sljedeću naredbu:

$ ldd / usr / bin / firefox

Izlaz iz naredbe bit će 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 naziv biblioteke, a heksadecimalni broj je adresa na kojoj će se knjižnica učitati u memoriju.

Na mnogim drugim redovima primijetit ćete da je simbol => slijedi put. Ovo je put do fizičkog binarnog; heksadecimalni broj je adresa na kojoj će biti učitana knjižnica.