Ldd əmri hər hansı bir proqramın tələb etdiyi paylaşılan kitabxanaları göstərmək üçün istifadə edilə bilər.
Bu, itkin düşmüş bir asılılıq olduğunda işləmək üçün faydalıdır və itkin funksiyalar və obyektlərin siyahısı üçün istifadə edilə bilər.
ldd əmr sintaksisi
Ldd komutunu istifadə edərkən düzgün sözdizimdir :
ldd [OPTION] ... FILE ...Yuxarıda göstərilən əmrdə [OPTION] yerə yerləşdirilə bilən mövcud ldd komut açarları var:
- yardım və çıxışdan çap olun - versiya çap versiyası məlumatı və exit -d, -data-relocs proses data relocations -r, - funksiyası relocs proses data və funksiyası relocations -u, - istifadə olunmamış çap istifadə olunmamış birbaşa bağımlılıkları -v, - bütün məlumatları çap edinLdd əmrini necə istifadə etmək olar
Ldd komutundan daha ətraflı məlumat almaq üçün aşağıdakı əmrləri istifadə edə bilərsiniz:
ldd -v / path / to / proqram / çalıştırılabilirÇıxış versiyası məlumatları və paylaşılan kitabxanalara belə yollar və ünvanları göstərir:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)SO faylı heç bir halda yoxdursa, aşağıdakı komutu istifadə edərək eksik kitabxanaları tapa bilərsiniz:
ldd -d yolu / to / proqramıÇıxış aşağıdakılara bənzəyir:
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)Mühüm: əmr həqiqətən həyata keçirə bilər, çünki ldd əmrini əsassız bir proqrama yönəltməyin. Bu, bütün asılılıq ağacını deyil, doğrudan birbaşa bağlılığı göstərən təhlükəsiz alternativdir: objdump -p / path / to / program | grep NEEDED .
Bir tətbiqə necə yol tapın
Əgər bir sıra yolları edə biləcəyiniz ldd ilə bağlılığını tapmaq istəyirsinizsə, bir proqram üçün tam yol təqdim etməlisiniz.
Məsələn, bu Firefox yolunu necə tapa bilərsiniz:
/ / firefox adıBununla yanaşı, tapmaq komutu ilə olan problem yalnız çalıştırılabilir faylları deyil, Firefox'un hər yerdə belə olduğu kimi siyahısı:
- /etc/skel/.mozilla/firefox
- / home // cache / mozilla / firefox
- /home//mozilla/firefox
- / usr / bin / Firefox
- / usr / lib / Firefox
- / usr / lib / Firefox / Firefox
Bu yanaşma bir qədər overkill və sudo komandanızı imtiyazlarınızı yüksəltmək üçün istifadə etməli ola bilərsiniz , əksinə çox icazə rədd edilmiş səhvləri alacaqsınız.
Bunun yerinə bir proqramın yolunu tapmaq üçün harada komandanlığı istifadə etmək çox asandır:
burada firefoxBu dəfə çıxış belə ola bilər:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Firefox üçün paylaşılan kitabxanaları tapmaq üçün indi etmək üçün lazım olan bütün əmrlər aşağıdakı əmrdir:
ldd / usr / bin / firefoxKomanda çıxışı belə bir şey olacaq:
linux-vdso.so.1 (0x00007fff8364000)
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 kitabxananın adıdır və hex sayı kitabxananın yaddaşına yüklənəcəyi ünvandır.
=> Simvolu bir yolla izləndiyini digər xəttlərdən birində görürsünüz. Bu fiziki ikili yol; hex sayı kitabxananın yüklənəcəyi ünvandır.