Find et programs delte biblioteker med 'ldd'-kommandoen
Brug ldd kommando for at vise de delte biblioteker, der kræves af et givet program. ldd-kommandoen er nyttig til at træne, når der mangler en afhængighed. Det kommando viser også manglende funktioner og objekter.
ldd kommandosyntaks
Overhold det rigtige syntaks for kommandoen ldd for at undgå fejl:
ldd [VALG]... FIL...
Brug en eller flere af de tilgængelige ldd-kommandokontakter, indsat i [OPTION]-punktet i ovenstående kommando:
- --help: Udskriv denne hjælp og afslut.
- --version: Udskriv versionsoplysninger og afslut.
- -d, --data-relocs: Behandle dataflytninger.
- -r, --function-relocs: Procesdata og funktionsflytninger.
- -u, --unused: Udskriv 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 /sti/til/program/eksekverbar
Outputtet viser versionsinformation samt stier og adresser til de delte biblioteker, som dette:
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 eksisterer, kan du finde de manglende biblioteker ved at bruge følgende kommando:
ldd -d sti/til/program
Outputtet ligner følgende:
linux-vdso.so.1 (0x00007ffc2936b000)
/home/gary/demo/garylib.so => ikke fundetlibc.so.6 => usr/lib/libc.so.6 (0x00007fd0c6259000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Kør aldrig ldd-kommandoen mod et program, der ikke er tillid til, fordi ldd-kommandoen kan udføre den. Brug i stedet et sikrere alternativ, der kun viser de direkte afhængigheder og ikke hele afhængighedstræet:
objdump -p /sti/til/program | grep NØDVENDIG

Sådan finder du vejen til en applikation
Du skal angive den fulde sti til en applikation, hvis du vil finde dens afhængigheder med ldd, hvilket du kan gøre på flere måder.
Sådan finder du fx vejen til Firefox:
find / -navn firefox
Problemet med find kommando, er imidlertid, at den viser den eksekverbare og overalt, hvor Firefox er placeret, sådan her:
/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 kommando for at hæve dine privilegier, ellers vil du sandsynligvis få fejl, der nægtes tilladelse.
Det er i stedet nemmere at bruge hvor er kommandoen for at finde en applikations sti:
hvor er firefox
Denne gang kan outputtet se sådan ud:
/usr/bin/firefox
/etc/firefox
/usr/lib/firefox

Indtast derefter følgende kommando for at finde de delte biblioteker til Firefox:
ldd /usr/bin/firefox
Outputtet fra kommandoen vil være noget som dette:
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 navnet på biblioteket, og hex-nummeret er adressen, hvor biblioteket er indlæst i hukommelsen.
På mange linjer er => symbolet efterfølges af en sti. Dette er vejen til den fysiske binære. Hex-nummeret er adressen, hvor biblioteket er indlæst.