Запитання з тегом «dynamic-linking»

В обчислювальній роботі динамічне з'єднання - це процес операційної системи (ОС), який завантажує (копії з постійної пам’яті в оперативну пам’ять) і посилає (заповнює таблиці стрибків і переміщує покажчики) спільні бібліотеки, необхідні виконуваному файлу під час виконання, тобто коли воно виконується.

1
Використання альтернативного libc з хаками ld-linux.so; чистіший метод?
У мене є застаріла система з дуже старим glibc, яку ми не можемо модернізувати, не піднявши на себе гору тестувальних / перевірочних робіт. Мені потрібно було кілька разів запускати нові програми (наприклад, Java 1.7) у цій системі. Я вибрав рішення для chroot, де я пакую всі необхідні ваги і запускаю …

1
Linux, GNU GCC, ld, сценарії версій та двійковий формат ELF - Як це працює?
Я намагаюся дізнатися більше про версію бібліотеки в Linux і про те, як все це працювати. Ось контекст: - У мене є дві версії динамічної бібліотеки, які розкривають один і той же набір інтерфейсів, скажімо, libsome1.soі libsome2.so. - Програма пов’язана проти libsome1.so. - libdl.soСкажімо, ця програма використовує для динамічного завантаження …

2
Як може динамічний зв’язок / завантажувач сам динамічно пов'язаний, як повідомляється у файлі?
Розглянемо спільні об'єктні залежності /bin/bash, що включає /lib64/ld-linux-x86-64.so.2(динамічний лінкер / завантажувач): 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) Перевірка /lib64/ld-linux-x86-64.so.2показує, що це символьне посилання на /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 /lib64/ld-linux-x86-64.so.2 -> …

2
Неможливо виконати бінарне в NixOS - Немає такого файлу чи каталогу
Я спробував встановити поточний jrek oracle на VM, що працює з NixOS. Тепер відбувається таке: [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? Названий файл, очевидно, …

2
Спільні бібліотеки ELF - мотивація для PLT
Чи може самостійно змінювати код для прискорення виклику функцій у динамічно пов'язаних бібліотеках? Наскільки я розумію, бібліотеки спільного використання ELF використовують своєрідну таблицю непрямих стрибків (таблиця зв’язків процедур або PLT), щоб увімкнути ледачі зв'язування функцій бібліотеки. Здається, мета полягає у тому, щоб уникнути необхідності змінювати таблицю в кодовому сегменті, одночасно …

2
Чи існує механізм, який захищає програми під час оновлення бібліотеки?
Якщо користувач працює над додатком, який динамічно пов'язаний, а система оновлюється, чи існує якийсь механізм захисту, який запобігає пошкодженню програми? Або це залежить від застосування?

1
Які частини виконуваного ELF завантажуються в пам'ять, а де?
Що я вже знаю: Виконавчий файл ELF має ряд розділів, очевидно, що розділи .text і .data завантажуються в пам'ять, оскільки це основні частини програми. Але для того, щоб програма працювала, їй потрібно більше інформації, особливо якщо вона динамічно пов'язана. Мене цікавлять такі розділи, як .plt, .got, .dynamic, .dynsym, .dynstr etcetera. …

2
Чому я не можу встановити кілька версій спільної бібліотеки?
Часто трапляються випадки, коли певна програма буде залежати від версії бібліотеки xy, а інша - від xz, але, наскільки мені відомо, жоден менеджер пакунків не дозволить мені встановити і xy, і xz. Іноді вони дозволять обидві основні версії (наприклад, qt4 і qt5, які можна встановити одночасно), але (здавалося б) ніколи …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.