Wiem, że istnieje polecenie, które wyświetla mi biblioteki i odpowiednie wersje, z którymi połączono oprogramowanie.
Coś z ld lub libtool?
Ale ja po prostu nie pamiętam. Spędziłem trochę czasu w Google, ale nic nie wymyśliłem.
Aktualizacja
ldd <binary>
pomogłaby na Linuksie ( z @ Ernelli ), podczas gdy znalazłem, że otool -L <binary>
działa podobnie w MacOS X.
linux
macos
shared-libraries
er4z0r
źródło
źródło
Odpowiedzi:
Wypróbuj ldd binary-exec
Przykład:
źródło
Aby znaleźć to, czego potrzebuje bezpośrednio:
ldd
jak wspomniano w innym miejscu, pokaże wszystkie bezpośrednie i pośrednie biblioteki lib - wszystko, czego potrzebuje w czasie wykonywania. To może nie być pełna lista, ponieważ możesz dynamicznie otwierać rzeczy za pomocą dlopen (), ale powinno to działać w 99% przypadków.ld i libtool są używane w czasie kompilacji / linku. Nie są przydatne, gdy masz aplikację.
EDYCJA Widzę późniejsze pytania, które pytałeś o OSX, ale chcę dodać do mojej odpowiedzi na narzędzia Linux:
Jednej rzeczy zapomniałem wspomnieć, jakiś czas temu; zapytałeś o wersje. Ani
ldd
teżreadelf
nie odpowiemy na pytanie „jaka wersja”. Podadzą nazwę pliku, którego szukasz, a konwencja nazewnictwa może zawierać informacje o wersji, ale nic tego nie wymusza. Symbole mogą być wersjonowane, a żeby je zobaczyć, musiałbyś o wiele mniej wiedziećnm
,źródło
Innym sposobem byłoby użycie objdump.
Pokazuje wszystkie potrzebne zależności tylko dla tego pliku binarnego. Bardzo przydatne.
źródło