Skip to main content

Hitta ett programs delade bibliotek med kommandot "ldd"

OPPO Presents Suno Chanda Season 2 Episode #28 HUM TV Drama 3 June 2019 (Maj 2025)

OPPO Presents Suno Chanda Season 2 Episode #28 HUM TV Drama 3 June 2019 (Maj 2025)
Anonim

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

ldd kommandosyntax

Observera den korrekta syntaxen för kommandot ldd för att undvika fel:

ldd OPTION … FIL …

Använd en eller flera av de tillgängliga ldd-kommandon, som sätts in i ALTERNATIV plats i ovanstående kommando:

--hjälp | skriv ut den här hjälpen och avsluta --version | skriv ut versionsinformation och avsluta -d, - data-relocs | bearbeta dataförflyttningar -r, - funktion-relocs | processdata och funktionsflyttningar -u, --Unvända | skriva ut oanvända direkt beroenden -v, --verbose | skriv ut all information

Så här använder du kommandot Ldd

Utför följande kommando för att få mer information om ett program:

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

Utgången visar versionsinformation samt sökvägar och adresser till de delade biblioteken, så här:

$ ldd 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 => ​​not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Kör aldrig kommandot ldd mot ett osäkert program eftersom ldd faktiskt kan utföra det. Använd i stället ett säkrare alternativ som visar bara de direkta beroenden och inte hela beroendet:

$ objdump -p / path / to / program | grep behövdes

Så här hittar du sökvägen till en applikation

Du måste ge hela sökvägen till en applikation om du vill hitta dess beroende med Ldd, vilket du kan göra på flera sätt.

Det här är till exempel hur du hittar sökvägen till Firefox:

$ hitta / -namn firefox

Problemet med find-kommandot är dock att det inte bara listar körbar men överallt där Firefox finns, så här:

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

Detta tillvägagångssätt är lite överkill och du kan behöva använda sudo-kommandot för att höja dina privilegier, annars kommer du sannolikt att få massor av tillståndsförnekade fel.

Det är i stället mycket lättare att använda varis-kommandot för att hitta en applikations sökväg:

$ var är firefox

Den här gången kan utmatningen se ut så här:

/ Usr / bin / firefox

/ Etc / firefox

/ Usr / lib / firefox

Allt du behöver göra nu för att hitta de delade biblioteken för Firefox skriver du följande kommando:

$ ldd / usr / bin / firefox

Utmatningen från kommandot kommer att bli något 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 bibliotekets namn och hex-numret är adressen där biblioteket ska laddas i minnet.

Du märker på många av de andra raderna att = = symbolen följs av en sökväg. Detta är vägen till det fysiska binära; hex-numret är adressen där biblioteket ska laddas.