Naudoti ldd komandą rodyti bendrai naudojamas bibliotekas, kurių reikia bet kuriai programai - naudinga dirbant, kai trūksta priklausomybės. Komanda taip pat nurodo trūkstamas funkcijas ir objektus.
ldd komandų sintaksė
Kad išvengtumėte klaidų, laikykitės tinkamos komandų ldd sintaksės:
ldd OPTION … FILE …
Naudokite vieną ar daugiau galimų ldd komandų jungiklių, įterptų į OPTION vietoje pirmiau pateiktoje komandoje: --help | atspausdinkite šią pagalbą ir išeikite --versija | spausdinti versijos informaciją ir išeiti -d, -data-relocs | apdoroti duomenų perkėlimus -r, --funkcijos-relociai | apdoroti duomenis ir perkelti funkcijas -u, --unused | spausdinti nenaudojamas tiesiogines priklausomybes -v, --verbose | spausdinti visą informaciją Norėdami gauti daugiau informacijos apie programą atlikite šią komandą: $ 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)
Niekada paleiskite komandą ldd nepatikimoje programoje, nes "ldd" gali iš tikrųjų ją vykdyti. Vietoj to naudokite saugesnę alternatyvą, rodančią tik tiesiogines priklausomybes, o ne visą priklausomybės medį: $ objdump-p / path / to / program | grep REIKIA Jūs 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": $ find / -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 pernelyg stiprus, todėl gali prireikti naudoti komandą sudo, kad padidintumėte privilegijas, be to, galite gauti daug neteisingų leidimų. Vietoje to, daug lengviau naudoti komandą "find", norėdami rasti programos kelią: $ whereis 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. Kaip naudoti ldd komandą
Kaip rasti kelią prie paraiškos













