Skip to main content

Find et programs fælles biblioteker Med kommandoen "ldd"

Brug af tæl.hviser-kommandoen i excel (April 2025)

Brug af tæl.hviser-kommandoen i excel (April 2025)
Anonim

Brug LDD kommando for at vise de delte biblioteker, der kræves af et givet program - nyttigt til at træne ud, når der mangler afhængighed. Kommandoen indeholder også manglende funktioner og objekter.

ldd Command Syntax

Overhold den korrekte syntaks for kommandoen ldd for at undgå fejl:

ldd OPTION … FIL …

Brug en eller flere af de ledige ldd kommandokontakter, der er indsat i MULIGHED stedet i ovennævnte kommando:

--hjælp | Udskriv denne hjælp og afslut --version | print version information og exit -d, - data-relocs | behandle dataoverførsler -r, - funktion-relocs | behandle data og funktionsflytninger -u, --unbrugt | udskrive ubrugte direkte afhængigheder -v, --verbose | Udskriv alle oplysninger

Sådan bruges ldd-kommandoen

Udfør følgende kommando for at få flere oplysninger om et program:

$ ldd -v / path / to / program / executable

Udgangen viser versionsinformation samt stier og adresser til de delte biblioteker, som denne:

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

Hvis SO-filen slet ikke findes, kan du finde de manglende biblioteker ved hjælp af følgende kommando:

$ ldd -d sti / til / program

Udgangen svarer til følgende:

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

Kør aldrig ldd-kommandoen mod et usikkert program, da ldd faktisk kan udføre det. Brug i stedet et sikrere alternativ, der kun viser de direkte afhængigheder og ikke hele afhængigheds træet:

$ objdump -p / path / to / program | grep nødvendig

Sådan finder du stien til et program

Du skal give den fulde sti til en applikation, hvis du vil finde sine afhængigheder med ldd, som du kan gøre på flere måder.

For eksempel, sådan kan du finde stien til Firefox:

$ find / -name firefox

Problemet med find-kommandoen er imidlertid, at det ikke kun vil liste den eksekverbare, men overalt, at Firefox er placeret, sådan:

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

Denne tilgang er lidt af en overkill, og du skal muligvis bruge sudo-kommandoen til at hæve dine privilegier, ellers får du sandsynligvis mange tilladelsesfornægtede fejl.

Det er i stedet meget lettere at bruge kommandoen whereis til at finde en applikations sti:

$ hvor er firefox

Denne gang kan udgangen se sådan ud:

/ Usr / bin / firefox

/ Etc / firefox

/ Usr / lib / firefox

Alt hvad du skal gøre nu for at finde de delte biblioteker til Firefox, er at skrive følgende kommando:

$ ldd / usr / bin / firefox

Udgangen fra kommandoen vil være sådan noget:

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 er bibliotekets navn, og hex-nummeret er adressen, hvor biblioteket skal indlæses i hukommelsen.

Du vil bemærke på mange af de andre linjer, at symbolet => efterfølges af en sti. Dette er vejen til det fysiske binære; hex-nummeret er adressen, hvor biblioteket skal læses.