Izmantojot komandu "ldd" Linux

Komandu ldd var izmantot, lai parādītu koplietojamās bibliotēkas, kas nepieciešamas jebkurai konkrētai programmai.

Tas ir noderīgi, lai izstrādātu, kad trūkst atkarības, un to var izmantot, lai norādītu trūkstošās funkcijas un objektus.

ldd komandas sintakse

Tas ir pareizs sintakse , lietojot komandu ldd:

ldd [OPTION] ... FILE ...

Šeit ir pieejami ldd komandu slēdži, kurus var ievietot [OPTION] vietas iepriekšējā komandā:

- palīdzēt izdrukāt šo palīdzību un iziet no --version drukas versijas informāciju un iziet -d, - datu-relocs procesu datu relocations -r, - funkcija-relocs procesa datus un funkciju pārvietošanu -u, --unused drukāt neizmantotās tiešās atkarības -v, --verbose drukāt visu informāciju

Kā lietot ldd komandu

Jūs varat izmantot šo komandu, lai iegūtu vairāk informācijas no jebkuras komandas ldd:

ldd -v / path / to / program / executable

Izvade parāda informāciju par versiju, kā arī koplietojamo bibliotēku ceļus un adreses, piemēram, šo:

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

Ja SO fails vispār nepastāv, jūs varat atrast trūkstošās bibliotēkas, izmantojot šādu komandu:

ldd-d ceļš / uz / programmu

Izvade ir līdzīga:

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)

Svarīgi: nekad neizmantojiet komandu ldd pret neuzticamu programmu, jo komanda patiešām to var izpildīt. Šī ir drošāka alternatīva, kas parāda tikai tiešās atkarības, nevis visu atkarīgo koku: objdump -p / path / to / program | NEPIECIEŠAMS grep .

Kā atrast ceļu uz pieteikumu

Jums ir jāsniedz pilnīgs ceļš uz lietojumprogrammu, ja vēlaties atrast tās atkarību no ldd, ko jūs varat darīt vairākos veidos.

Piemēram, kā jūs atrast ceļu uz Firefox :

atrast / -name firefox

Tomēr problēma ar meklēšanas komandu ir tā, ka tā ne tikai uzskaitīs izpildāmo failu, bet visur, kur atrodas Firefox, tāpat kā šis:

Šī pieeja ir nedaudz pārslogota, un jums var būt nepieciešams izmantot sudo komandu, lai paaugstinātu jūsu tiesības, citādi jūs varētu saņemt daudz atļauju liegta kļūdas.

Tā vietā daudz vieglāk izmantot šo komandu, lai atrastu lietojumprogrammas ceļu:

kuris firefox

Šoreiz izlaide varētu izskatīties šādi:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Viss, kas jums jādara tagad, lai atrastu Firefox koplietojamās bibliotēkas, ir šāda komanda:

ldd / usr / bin / firefox

Komandas izeja būs šāda:

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 ir bibliotēkas nosaukums, un hex numurs ir adrese, kurā bibliotēka tiks ielādēta atmiņā.

Jūs ievērosiet daudzās citās līnijās, ka simbols seko ceļam. Šis ir ceļš uz fizisko bināro; hex numurs ir adrese, kurā bibliotēka tiks ielādēta.