Naudojant "ldd" komandą Linux

"Ldd" komandą galima naudoti norint parodyti bendrai naudojamas bibliotekas, kurių reikia bet kuriai programai.

Tai naudinga dirbant, kai trūksta priklausomybės ir gali būti naudojamas sąraše trūkstamų funkcijų ir objektų.

ldd komandų sintaksė

Tai yra tinkama sintaksė naudojant komandą ldd:

ldd [OPTION] ... FILE ...

Čia yra galimi ldd komandų jungikliai, kuriuos galima įterpti į [OPTION] vietą, esančią aukščiau pateiktoje komandoje:

- help print this help and exit - version print version information and exit -d, -data-relocs proceso duomenų relocations -r, -function-relocs proceso duomenys ir funkcijos relocations -u, --unused print unused direct dependencies -v, --verbose spausdinti visą informaciją

Kaip naudoti ldd komandą

Galite naudoti šią komandą, kad gautumėte daugiau informacijos iš bet kurios ldd komandos:

ldd -v / path / to / program / executable

Išėjimas rodo informaciją apie versiją, taip pat kelius ir adresus bendrai naudojamoms bibliotekoms, pvz .:

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

Jei SO failas apskritai neegzistuoja, galite rasti trūkstamas bibliotekas naudodami šią komandą:

ldd-d kelias / į / programa

Rezultatas yra panašus į sekantį:

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)

Svarbu: niekada paleiskite komandą ldd nepatikimoje programoje, nes komanda gali iš tikrųjų ją vykdyti. Tai saugesnė alternatyva, rodanti tik tiesiogines priklausomybes, o ne visą priklausomybės medį: objdump-p / path / to / program | grep REIKIA .

Kaip rasti kelią prie paraiškos

Turite pateikti visą kelią prie programos, jei norite rasti priklausomybes nuo "ldd", kurį galite atlikti keliais būdais.

Pvz., Tai, kaip norite rasti kelią " Firefox" :

rasti / -name firefox

Tačiau problema su komandą "find" reiškia, kad jis ne tik nurodo vykdomąjį failą, bet visur, kur yra "Firefox", kaip šis:

Šis metodas yra šiek tiek overkill, ir jums gali prireikti naudoti komandą sudo, kad padidintumėte privilegijas, kitaip jūs tikriausiai gausite daugybę leidimų, dėl kurių neteksite klaidų.

Vietoje to, daug lengviau naudoti komandą " find", norėdami rasti programos kelią:

kuris firefox

Šį kartą produkcija gali atrodyti taip:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Viskas, ką jums reikia padaryti dabar, kad galėtumėte rasti bendrąsias "Firefox" bibliotekas, įveskite šią komandą:

ldd / usr / bin / firefox

Komandos išvestis bus tokia:

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 yra bibliotekos pavadinimas, o šešioliktainis numeris - tai adresas, į kurį biblioteka bus įkelta į atmintį.

Daugelyje kitų eilučių pastebėsite, kad po simboliu => eina kelias. Tai kelias į fizinę dvejetainę; šešioliktainis numeris yra adresas, kuriame bus įkelta biblioteka.