Gebruik die ldd-opdrag in Linux

Die ldd-opdrag kan gebruik word om u die gedeelde biblioteke wat deur enige gegewe program vereis word, te wys.

Dit is nuttig om uit te werk wanneer daar 'n ontbrekende afhanklikheid is en kan gebruik word om ontbrekende funksies en voorwerpe te lys.

ldd Command Syntax

Dit is die korrekte sintaksis wanneer u die ldd-opdrag gebruik:

ldd [OPSIE] ... Lêer ...

Hier is die beskikbare ldd bevelskakelaars wat in die [OPTION] plek in die bogenoemde opdrag ingevoeg kan word:

- help druk hierdie hulp en verlaat - weergawe druk weergawe inligting en uitgang -d, - data-relocs verwerk data-verplaatsingen -r, - funksie relocaties verwerk data en funksie verplaatsingen -u, - ongebruikte druk ongebruikte direkte afhanklikhede -v, --verbose druk alle inligting

Hoe om die ldd-bevel te gebruik

U kan die volgende opdrag gebruik om meer inligting van enige ldd-opdrag te kry:

ldd -v / path / to / program / executable

Die uitset wys weergaweinligting sowel as die paaie en adresse aan die gedeelde biblioteke, soos volg:

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

As die SO-lêer glad nie bestaan ​​nie, kan u die ontbrekende biblioteke vind met die volgende opdrag:

ldd -d pad / na / program

Die uitset is soortgelyk aan die volgende:

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

Belangrik: Begin nooit die ldd-bevel teen 'n onbetroubare program nie, aangesien die opdrag dit werklik kan uitvoer. Dit is 'n veiliger alternatief wat net die direkte afhanklikhede en nie die hele afhanklikheidsboom toon nie: objdump -p / path / to / program | grep benodig .

Hoe om die pad na 'n aansoek te vind

U moet die volle pad na 'n aansoek verskaf as u sy afhanklikhede met ldd wil vind, wat u op verskillende maniere kan doen.

So kan jy byvoorbeeld die pad na Firefox vind :

vind / -naam firefox

Die probleem met die vind opdrag is egter dat dit nie net die uitvoerbare lys sal wys nie, maar oral waar Firefox geleë is, soos volg:

Hierdie benadering is 'n bietjie van 'n overkill en jy moet die sudo-opdrag gebruik om jou voorregte te verhef, anders sal jy heelwat toestemming van foute ontken.

Dit is eerder baie makliker om die waarskommando te gebruik om 'n aansoek se pad te vind:

waar is firefox

Hierdie keer kan die uitset soos volg lyk:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Al wat jy nou moet doen om die gedeelde biblioteke vir Firefox te vind, tik die volgende opdrag:

ldd / usr / bin / firefox

Die uitset van die opdrag sal so iets wees:

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)

Die Linux-vdso.so.1 is die naam van die biblioteek en die hex-nommer is die adres waar die biblioteek in geheue gelaai sal word.

Jy sal op baie van die ander lyne sien dat die => simbool gevolg word deur 'n pad. Dit is die pad na die fisiese binêre; Die heks nommer is die adres waar die biblioteek gelaai sal word.