Pytania otagowane jako dynamic-linking

W komputerach dynamiczne łączenie to proces systemu operacyjnego (OS), który ładuje (kopiuje z pamięci trwałej do pamięci RAM) i łączy (wypełnia tabele przeskoków i przenosi wskaźniki) biblioteki współdzielone potrzebne plikowi wykonywalnemu w czasie wykonywania, to znaczy kiedy jest wykonywany.

1
Używanie alternatywnego libc z hackami ld-linux.so; czystsza metoda?
Mam starszy system z bardzo starą biblioteką glibc, której nie możemy zaktualizować bez ponoszenia ogromnych prac związanych z testowaniem / sprawdzaniem poprawności. Kilka razy musiałem uruchamiać w tym systemie nowsze programy (takie jak Java 1.7). Wybrałem rozwiązanie chroot, w którym pakuję wszystkie potrzebne biblioteki i uruchamiam usługę w chroot. Chroot …

1
Linux, GNU GCC, ld, skrypty wersji i format binarny ELF - jak to działa?
Próbuję dowiedzieć się więcej o wersjonowaniu bibliotek w systemie Linux i o tym, jak to wszystko uruchomić. Oto kontekst: - Mam dwie wersje biblioteki dynamicznej, która udostępnia ten sam zestaw interfejsów, powiedzmy libsome1.soi libsome2.so. - Aplikacja jest połączona z libsome1.so. - Ta aplikacja używa libdl.sodo dynamicznego ładowania innego modułu, powiedzmy …

2
W jaki sposób sam dynamiczny linker / moduł ładujący może być dynamicznie łączony, zgodnie z raportem „file”?
Rozważ zależności obiektu współdzielonego /bin/bash, które obejmują /lib64/ld-linux-x86-64.so.2(dynamiczny linker / moduł ładujący): ldd /bin/bash linux-vdso.so.1 (0x00007fffd0887000) libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f57a04e3000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f57a04de000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f57a031d000) /lib64/ld-linux-x86-64.so.2 (0x00007f57a0652000) Sprawdzanie /lib64/ld-linux-x86-64.so.2pokazuje, że jest to dowiązanie symboliczne do /lib/x86_64-linux-gnu/ld-2.28.so: ls -la /lib64/ld-linux-x86-64.so.2 lrwxrwxrwx 1 root root 32 May 1 19:24 …

2
Nie można uruchomić pliku binarnego w NixOS - Brak takiego pliku lub katalogu
Próbowałem zainstalować bieżący środowisko Oracle na maszynie wirtualnej z systemem NixOS. Teraz dzieje się: [michas@cc:~]$ tar xvzf jre-7u40-linux-x64.tar.gz |grep bin/java jre1.7.0_40/bin/javaws jre1.7.0_40/bin/java_vm jre1.7.0_40/bin/java [michas@cc:~]$ ls -l ./jre1.7.0_40/bin/java -rwxr-xr-x 1 michas nogroup 7750 Aug 27 09:17 ./jre1.7.0_40/bin/java [michas@cc:~]$ ./jre1.7.0_40/bin/java bash: ./jre1.7.0_40/bin/java: No such file or directory WTF? Nazwany plik jest oczywiście …

2
Wspólne biblioteki ELF - motywacja do PLT
Czy można użyć kodu samomodyfikującego do przyspieszenia wywoływania funkcji w dynamicznie połączonych bibliotekach? O ile rozumiem, biblioteki współdzielone ELF używają pewnego rodzaju pośredniej tablicy skoków (tabela łączenia procedur lub PLT), aby umożliwić leniwe wiązanie funkcji bibliotecznych. Wydaje się, że celem jest uniknięcie konieczności modyfikowania tabeli w segmencie kodu, jednocześnie umożliwiając …


1
Które części pliku wykonywalnego ELF są ładowane do pamięci i gdzie?
Co już wiem: Plik wykonywalny ELF ma wiele sekcji, oczywiście sekcje .text i .data są ładowane do pamięci, ponieważ są to główne części programu. Ale aby program działał, potrzebuje więcej informacji, zwłaszcza gdy jest połączony dynamicznie. Interesują mnie sekcje takie jak .plt, .got, .dynamic, .dynsym, .dynstr itp. Części ELF, które …


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.