Skip to main content

Znajdź współdzielone biblioteki programu za pomocą polecenia "ldd"

Używanie polecenia msconfig - ePoradnik24.PL (Czerwiec 2026)

Używanie polecenia msconfig - ePoradnik24.PL (Czerwiec 2026)
Anonim

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

Jak korzystać z polecenia ldd

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

Jak znaleźć ścieżkę do aplikacji

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:

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

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.