Skip to main content

Пронађите библиотеке у програму програма помоћу команде "лдд"

Anonim

Користити лдд команду да покажу дељене библиотеке потребне за било који програм - корисно за рад када постоји недостатак зависности. Команда такође наводи недостајуће функције и објекте.

лдд Цомманд Синтак

Обратите пажњу на исправну синтаксу за наредбу лдд да бисте избегли грешке:

лдд ОПТИОН … ФИЛЕ …

Користите један или више доступних лдд командних прекидача, уметнутих у ОПЦИЈА место у горњој команди:

--хелп | одштампајте ову помоћ и изађите --версион | информације о штампању и излазу -д, --дата-релокса | премештање података о процесу -р, -фунцтион-релоцс | процесних података и пресељења функција -у, -унусед | штампати неупотребљене директне зависности -в, --вербосе | одштампајте све информације

Како користити лдд команду

Извршите следећу наредбу да бисте добили више информација о програму:

$ лдд -в / патх / до / програм / извршна

Излаз приказује информације о верзији, као и путеве и адресе у дељеним библиотекама, овако:

$ лдд либсхаред.со линук-вдсо.со.1 => (0к00007ффф26ац8000) либц.со.6 => /либ/либц.со.6 0к00007фф1дф55а000) /либ64/лд-линук-к86-64.со.2 (0к00007фф1дфафе000)

Ако СО датотека уопште не постоји, можете пронаћи недостајуће библиотеке помоћу следеће наредбе:

$ лдд -д пут до / програма

Излаз је сличан следећем:

линук-вдсо.со.1 (0к00007ффц2936б000) /хоме/гари/демо/гарилиб.со => није пронађен либц.со.6 => уср / либ / либц.со.6 (0к00007фд0ц6259000) /либ64/лд-линук-к86-64.со.2 (0к00007фд0ц65фд000)

Никада немојте покренути лдд команду против непоузданог програма јер лдд то заправо може извршити. Уместо тога, користите сигурнију алтернативу која показује само директне зависности, а не целокупно зависно дрво:

$ објдумп -п / патх / то / програм | греп НЕЕДЕД

Како пронаћи пут до апликације

Морате да обезбедите пуну путању до неке апликације ако желите да пронађете његове зависности са лдд-ом, што можете учинити на неколико начина.

На пример, овако ћете пронаћи пут до Фирефока:

$ финд / -наме фирефок

Проблем са наредбом за проналазак је, међутим, да ће не само пописати извршну датотеку, већ свугдје гдје се Фирефок налази, овако:

  • /етц/скел/.мозилла/фирефок
  • / хоме // цацхе / мозилла / фирефок
  • /хоме//.мозилла/фирефок
  • / уср / бин / Фирефок
  • / уср / либ / Фирефок
  • / уср / либ / Фирефок / Фирефок

Овај приступ је мало прекомјерно и можда ћете морати да користите команду судо да бисте подигли своје привилегије, у противном ће вероватно добити многе грешке које нису дозвољене.

Уместо тога, много је лакше користити команду вхереис да би пронашла путању апликације:

$ вхереис фирефок

Овог пута излаз може изгледати овако:

/ уср / бин / фирефок

/ етц / фирефок

/ уср / либ / фирефок

Све што сада треба да урадите да пронађете дељене библиотеке за Фирефок је укуцати следећу наредбу:

$ лдд / уср / бин / фирефок

Излаз из наредбе биће нешто овако:

линук-вдсо.со.1 (0к00007фффф8364000)либптхреад.со.0 => /уср/либ/либптхреад.со.0 (0к00007феб9917а000)либдл.со.2 => /уср/либ/либдл.со.2 (0к00007феб98ф76000)либстдц ++. со.6 => /уср/либ/либстдц++.со.6 (0к00007феб98бф4000)либм.со.6 => /уср/либ/либм.со.6 (0к00007феб988ф6000)либгцц_с.со.1 => /уср/либ/либгцц_с.со.1 (0к00007феб986е0000)либц.со.6 => /уср/либ/либц.со.6 (0к00007феб9833ц000)/либ64/лд-линук-к86-64.со.2 (0к00007феб99397000)

Линук-вдсо.со.1 је име библиотеке, а хекс број је адреса на којој ће се библиотека учитати у меморији.

На многим редовима ћете приметити да симбол => следи пут. Ово је пут ка физичком бинарном; хек број је адреса у којој ће се библиотека учитати.