Użyj ldd polecenie, aby pokazać biblioteki współdzielone wymagane przez dany program - przydatne do wypracowania, gdy brakuje zależności. Polecenie zawiera także listę brakujących funkcji i obiektów.
Składnia polecenia ldd
Zwróć uwagę na poprawną składnię polecenia ldd, aby uniknąć błędów:
ldd OPCJE … PLIK …
Użyj jednego lub więcej dostępnych przełączników poleceń ldd, wstawionych do OPCJA spot w powyższym poleceniu: --help | wydrukuj tę pomoc i wyjdź --version | wydrukuj informacje o wersji i zakończ -d, --data-relocs | przenoszenie danych procesowych -r, --function-relocs | przetwarzanie danych i relokacji funkcji -u, --unused | wydrukuj nieużywane bezpośrednie zależności -v, --verbose | wydrukuj wszystkie informacje Wykonaj następujące polecenie, aby uzyskać więcej informacji o programie: $ ldd -v / path / to / program / executable
Dane wyjściowe pokazują informacje o wersji, a także ścieżki i adresy bibliotek współużytkowanych, takie jak to: $ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Jeśli plik SO w ogóle nie istnieje, można znaleźć brakujące biblioteki za pomocą następującego polecenia: $ ldd -d ścieżka / do / program
Dane wyjściowe są podobne do następujących: 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)
Nigdy nie uruchamiaj polecenia ldd przeciwko niezaufanemu programowi, ponieważ ldd może go faktycznie uruchomić. Zamiast tego użyj bezpieczniejszej alternatywy, która pokazuje tylko bezpośrednie zależności, a nie całe drzewo zależności: $ objdump -p / path / to / program | grep POTRZEBUJESZ Musisz podać pełną ścieżkę do aplikacji, jeśli chcesz znaleźć zależności Ldd, które możesz zrobić na kilka sposobów. Na przykład w ten sposób znajdziesz ścieżkę do Firefoksa: $ find / -name firefox
Problem z poleceniem find polega jednak na tym, że nie tylko wyświetla listę plików wykonywalnych, ale wszędzie tam, gdzie znajduje się Firefox, na przykład: To podejście jest trochę przesadzone i może zaistnieć potrzeba użycia polecenia sudo w celu podniesienia uprawnień, w przeciwnym razie wystąpi wiele błędów z odmową uprawnień. Zamiast tego łatwiej jest użyć polecenia whereis do znalezienia ścieżki aplikacji: $ whereis firefox
Tym razem dane wyjściowe mogą wyglądać następująco: / usr / bin / firefox / etc / firefox / usr / lib / firefox Teraz musisz tylko znaleźć udostępnione biblioteki dla Firefoksa, wpisz następujące polecenie: $ ldd / usr / bin / firefox
Wynik polecenia będzie mniej więcej taki: 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 to nazwa biblioteki, a liczba szesnastkowa to adres, pod którym biblioteka zostanie załadowana do pamięci. Na wielu innych liniach zauważysz, że po znaku => występuje ścieżka. To jest ścieżka do fizycznego binarnego; numer heksadecymalny to adres, pod którym zostanie załadowana biblioteka. Jak korzystać z polecenia ldd
Jak znaleźć ścieżkę do aplikacji




