Përdorimi i komandës "ldd" në Linux

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 informacionin

Si 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 / executable

Shfaqja 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ë / program

Produkti ë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 firefox

Problemi me komandën e gjetjes , megjithatë, është se ajo jo vetëm që do të listojë ekzekutimin, por kudo që ndodhet Firefox, si kjo:

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 firefox

Kë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 / firefox

Dalja 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.