Bruke ldd kommandoen for å vise de delte bibliotekene som kreves av et gitt program - nyttig for å trene når det mangler avhengighet. Kommandoen viser også manglende funksjoner og objekter.
ldd kommandosyntax
Følg riktig syntaks for ldd-kommandoen for å unngå feil:
ldd OPTION … FIL …
Bruk en eller flere av de tilgjengelige ldd kommandobrytene, satt inn i ALTERNATIV spot i kommandoen ovenfor: --hjelp | skriv ut denne hjelpen og avslutt --versjon | skriv ut versjoninformasjon og avslutt -d, - data-relocs | behandle dataoverføringer -r, --funksjon-relocs | behandle data og funksjon flyttinger -u, -unused | skriv ut ubrukte direkte avhengigheter -v, --verbose | skriv ut all informasjon Kjør følgende kommando for å få mer informasjon om et program: $ ldd -v / path / to / program / executable
Utgangen viser versjoninformasjon, samt stier og adresser til de delte bibliotekene, slik som dette: $ 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 ikke eksisterer i det hele tatt, kan du finne de manglende bibliotekene ved hjelp av følgende kommando: $ ldd -d sti / til / program
Utgangen ligner på 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)
Kjør aldri kommandoen ldd mot et usikkert program fordi ldd kanskje faktisk utfører det. Bruk i stedet et sikrere alternativ som bare viser de direkte avhengighetene og ikke hele avhengighetstreet: $ objdump -p / path / to / program | grep trengs Du må gi hele banen til et program hvis du vil finne avhengighetene med Ldd, som du kan gjøre på flere måter. For eksempel, slik finner du banen til Firefox: $ find / -name firefox
Problemet med finne-kommandoen er imidlertid at det ikke bare vil liste den kjørbare, men overalt som Firefox ligger, slik: Denne tilnærmingen er litt av en overkill, og du må kanskje bruke sudo-kommandoen for å heve dine privilegier, ellers vil du sannsynligvis få mange tillatelsesnekterte feil. Det er i stedet mye lettere å bruke varsel-kommandoen for å finne en applikasjons sti: $ hvor er firefox
Denne gangen kan utgangen se slik ut: / Usr / bin / firefox / Etc / firefox / Usr / lib / firefox Alt du trenger å gjøre nå for å finne delte biblioteker for Firefox, skriv inn følgende kommando: $ ldd / usr / bin / firefox
Utgangen fra kommandoen vil være noe slikt: 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 lastes inn i minnet. Du merker på mange av de andre linjene at = = symbolet etterfølges av en bane. Dette er banen til det fysiske binære; hex-nummeret er adressen hvor biblioteket skal lastes inn. Slik bruker du kommandoen ldd
Slik finner du banen til et program




