Saltar al contenido

Använd kommandot ‘ldd’ i Linux

12 de julio de 2021
find shared libraries ldd command 4017941 565ec6c33676418f9c18a5603b7d275f

Använd ldd kommando för att visa de delade biblioteken som krävs av ett visst program. Kommandot ldd är användbart för att träna när det saknas beroende. Kommandot listar också saknade funktioner och objekt.

ldd Kommandosyntax

Observera rätt syntax för kommandot ldd för att undvika fel: ldd [OPTION]… FIL …

Använd en eller flera av de tillgängliga ldd-kommandokontakterna, infogade i [OPTION] plats i ovanstående kommando:

  • –help: Skriv ut den här hjälpen och avsluta.
  • –version: Skriv ut versioninformation och avsluta.
  • -d, –relocs: Processdataflyttningar.
  • -r, –function-relocs: Processdata och funktionsflyttningar.
  • -u, –unused: Skriv ut oanvända direktberoenden.
  • -v, –verbose: Skriv ut all information.

Hur man använder ldd-kommandot

Utför följande kommando för att få mer information om ett program: ldd -v / sökväg / till / program / körbar

Utdata visar versioninformation samt sökvägar och adresser till de delade biblioteken, så här: libshared.so
linux-vdso.so.1 => (0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

Om SO-filen inte finns alls kan du hitta de saknade biblioteken med följande kommando: ldd -d sökväg / till / program

Utgången liknar följande: linux-vdso.so.1 (0x00007ffc2936b000)
/home/gary/demo/garylib.so => ​​hittades intelibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Linux ldd-kommando saknas

Kör aldrig ldd-kommandot mot ett otillförlitligt program eftersom ldd-kommandot kan utföra det. Använd istället ett säkrare alternativ som bara visar de direkta beroenden och inte hela beroendeträdet: objdump -p / path / to / program | grep BEHÖVS

Linux objdump ldd alternativ

Hur du hittar vägen till en applikation

Du måste ange hela sökvägen till en applikation om du vill hitta dess beroenden med ldd, vilket du kan göra på flera sätt. Så här hittar du till exempel sökvägen till Firefox: hitta / -namn firefox

Problemet med find-kommandot är dock att det listar den körbara och överallt där Firefox finns, så här: /etc/skel/.mozilla/firefox
/ hem // cache / mozilla / firefox
/home//.mozilla/firefox
/ usr / bin / Firefox
/ usr / lib / Firefox
/ usr / lib / Firefox / Firefox

Det här tillvägagångssättet är lite överdrivet och du kan behöva använda sudo-kommandot för att höja dina privilegier, annars kommer du troligen att få man tillåtelse-nekade fel. Det är istället lättare att använda kommandot whereis för att hitta en applikations sökväg: var är Firefox

Den här gången kan utdata se ut så här: / usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox

Linux var detta kommando

För att hitta de delade biblioteken för Firefox, ange följande kommando: ldd / usr / bin / firefox

Utdata från kommandot kommer att vara ungefär så här: 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 är namnet på biblioteket och hex-numret är den adress biblioteket laddas till i minnet. På många rader, => symbolen följs av en sökväg. Detta är vägen till den fysiska binären. Hexnumret är adressen där biblioteket laddas.