Komanda ldd mund të përdoret për t'ju treguar bibliotekat e përbashkëta që kërkohen nga çdo program i caktuar.
Kjo është e dobishme për të punuar kur ka një varësi të humbur dhe mund të përdoret për të listuar funksionet dhe objektet që mungojnë.
ldd Sintaksa e komandës
Kjo është sintaksë e duhur kur përdoret komanda ldd:
ldd [OPTION] ... FILE ...Këtu janë çelësat e komandës ldd në dispozicion që mund të futen në spotin [OPTION] në komandën e mësipërme:
- ndihmoni të shtypni këtë ndihmë dhe të dalni - versionin e versionit të printimit të informacionit dhe daljes -d, - transferimin e të dhënave të proceseve të dhënave-relocs -r, --funksionimin e relocimit të të dhënave të procesit dhe zhvendosjen e funksioneve -u, - printime të papërdorura të varura direkte -v, --verbose printoni te gjithe informacioninSi të përdorni komandën ldd
Ju mund të përdorni komandën e mëposhtme për të marrë më shumë informacion nga çdo komandë ldd:
ldd -v / path / to / program / executableShfaqja tregon informacionin e versionit, si dhe rrugët dhe adresat në bibliotekat e përbashkëta, si kjo:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Nëse skeda SO nuk ekziston fare, ju mund të gjeni bibliotekat e munguara duke përdorur komandën e mëposhtme:
ldd -d rrugë / në / programProdukti është i ngjashëm me sa vijon:
linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => nuk u gjet libc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)E rëndësishme: Asnjëherë mos e përdorni komandën ldd kundër një programi të pabesueshëm, meqë komanda mund ta ekzekutojë atë. Kjo është një alternativë më e sigurt që tregon vetëm varësitë e drejtpërdrejta dhe jo të gjithë pemën e varësisë: objdump -p / path / to / program | grep NEVOJSHME .
Si të gjesh rrugën për një aplikacion
Duhet të sigurosh rrugën e plotë të një aplikacioni nëse dëshiron të gjesh varësinë e saj me ldd, të cilat mund të bësh një numër mënyrash.
Për shembull, kështu do të gjesh rrugën e Firefox-it :
gjej / -name firefoxProblemi me komandën e gjetjes , megjithatë, është se ajo jo vetëm që do të listojë ekzekutimin, por kudo që ndodhet Firefox, si kjo:
- /etc/skel/.mozilla/firefox
- / Home // cache / mozilla / firefox
- /home//.mozilla/firefox
- / Usr / bin / Firefox
- / Usr / lib / Firefox
- / Usr / lib / Firefox / Firefox
Kjo qasje është pak e një mbingarkesë dhe mund t'ju duhet të përdorni komandën sudo për të ngritur privilegjet tuaja, përndryshe ju ka të ngjarë të merrni shumë leje që mohohen gabimet.
Është shumë më e lehtë të përdorësh komandën ku të gjesh rrugën e një aplikacioni:
ku firefoxKëtë herë rezultati mund të duket kështu:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Të gjithë ju duhet të bëni tani për të gjetur bibliotekat e përbashkëta për Firefox-in, shkruani komandën e mëposhtme:
ldd / usr / bin / firefoxDalja nga komanda do të jetë diçka e tillë:
linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc ++, kështu.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 është emri i bibliotekës dhe numri i magjishëm është adresa ku biblioteka do të ngarkohet në kujtesë.
Ju do të vini re në shumë nga linjat e tjera që simboli => ndiqet nga një rrugë. Kjo është rruga e binarit fizik; numri magjik është adresa ku biblioteka do të ngarkohet.