Brûk de "ldd" kommando yn Linux

It kommando ldd kin brûkt wurde om jo de dielde libraries sjen te litten dy't nedich binne troch elke opjûne programma.

Dit is handich foar it útfieren as der in ûntbrekkende ôfhinging is en kinne brûkt wurde om fûnen fan funksjes en objekten te lizzen.

ldd Kommando Syntaks

Dit is de goede syntaks by it brûken fan it ldd kommando:

ldd [OPTION] ... FILE ...

Hjir binne de beskikbere ldd-kommando-skeakels dy't yn it [boppekant] plak ynfierd wurde yn it boppeste kommando:

--helje dizze help en útfiere - ferzje fan ferzje fan ferzje-ynformaasje en útgong -d, -data-relocs-ferwurkingsgegevens -arrings -r, -funksjonele relocs-ferwurkingsgegevens en funksjonearings relaasjes -u, -unûntwurde print net brûkte streekôfhinklikens -v, - verbose alle ynformaasje op

Hoe kinne jo de ldd-kommando brûke

Jo kinne it folgjende kommando brûke om mear ynformaasje te krijen fan in ldd kommando:

ldd -v / path / to / programma / útfierber

De útfier lit ferzjesynformaasje as de paden en adressen sjen nei de dielde biblioteken, sa as dit:

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 de SO-bestân hielendal net bestiet, kinne jo de fereaske biblioteken fine mei it folgjende kommando:

ldd -d paad / nei / programma

De útfier is te fergelykjen mei de neikommende:

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

Wichtich: Folslein it ldd-kommando tsjin in ûntrêstich programma útfiere, omdat it kommando dat effekt hat. Dit is in feiliger alternatyf dy't allinich de direkte ôfhinklikens en net de folsleine ôfhinklikbaai sjen lit: objdump -p / path / to / programma | grep NEEDED .

Hoe kinne de paad in applikaasje fine

Jo moatte de folsleine paad oan in applikaasje oanbiede as jo har ôfhingingen fine mei ldd, dy't jo in oantal manieren dwaan kinne.

Sa is bygelyks hoe't jo de punt nei Firefox fine koenen :

Sykje / -namme firefox

It probleem mei it fûn kommando lykwols is dat it net allinich de útfierber litte wol, mar oeral dêr't Firefox sit, sa as dit:

Dizze oanpak is in bytsje fan in overkill en jo moatte it sudo kommando brûke om jo privileezjes te ferheegjen, oars kinne jo wierskynlik in soad fergunning ferwege.

It is dan folle makliker om it kommando wêr gebrûk te meitsjen om it paad fan in applikaasje te finen:

wêr is firefox

Op dit momint kin de útfier folgje:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Alles wat jo no dwaan wolle om de dielde biblioteken foar Firefox te finen is it type kommando te typen:

ldd / usr / bin / firefox

De útfier út it kommando sil dus sa wêze:

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)

De linux-vdso.so.1 is de namme fan 'e bibleteek en it heksnûmer is itadres wêr' t de biblioteek ynladen is.

Jo sille op in soad fan de oare linen sjen dat it => symboal folge wurdt troch in paad. Dit is it paad nei de fysike binary; it hex nûmer is it adres wêryn de biblioteek wurde laden.