Skip to main content

Programmas koplietoto bibliotēku meklēšana ar komandu "ldd"

Anonim

Izmantojiet ldd komanda parādīt koplietojamās bibliotēkas, kas nepieciešamas kādā konkrētā programmā - noderīga, lai izstrādātu, kad trūkst atkarības. Komanda arī norāda trūkstošās funkcijas un objektus.

ldd komandas sintakse

Lai izvairītos no kļūdām, ievērojiet pareizu komandas ldd sintakse:

ldd OPTION … FILE …

Izmantojiet vienu vai vairākus pieejamos ldd komandu slēdžus, kas ievietoti mapē OPTION vietas iepriekšējā komandā:

--palīdzība | izdrukājiet šo palīdzību un izejiet --versija | drukas versijas informācija un izeja -d, -data-relocs | apstrādāt datu pārvietošanu -r, --funkcijas-relocs | apstrādāt 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

Lai iegūtu vairāk informācijas par programmu, izpildiet šādu komandu:

$ 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 => ​​nav foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Nekad neizmantojiet komandu ldd pret neuzticamu programmu, jo ldd to var faktiski izpildīt. Tā vietā izmantojiet drošāku alternatīvu, kas parāda tikai tiešās atkarības, nevis visu atkarīgo koku:

$ objdump-p / ceļš / uz / programmu | 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:

$ find / -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:

  • /etc/skel/.mozilla/firefox
  • / home / cache / mozilla / firefox
  • /home//.mozilla/firefox
  • / usr / bin / Firefox
  • / usr / lib / Firefox
  • / usr / lib / Firefox / Firefox

Šī pieeja ir nedaudz pārslogota, un, iespējams, jums būs jāizmanto sudo komanda, lai paaugstinātu jūsu tiesības, citādi jūs saņemat daudz atļauju noraidīto kļūdu.

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.