Вопросы с тегом «dynamic-linking»

В вычислениях динамическое связывание - это процесс операционной системы (ОС), которая загружает (копирует из постоянного хранилища в ОЗУ) и связывает (заполняет таблицы переходов и перемещает указатели) общие библиотеки, необходимые для исполняемого файла во время выполнения, то есть когда это будет выполнено.

3
Узнайте, находится ли библиотека в пути
Предполагая, что я хочу проверить, установлена ​​ли библиотека и может ли она использоваться программой. Я могу использовать, ldconfig -p | grep mylibчтобы узнать, установлен ли он в системе. но что если библиотека известна только через настройки LD_LIBRARY_PATH? В этом случае программа может найти библиотеку, но ldconfigне сможет. Как я могу …

2
Как сам динамический компоновщик / загрузчик может быть динамически связан как сообщено `file`?
Рассмотрим зависимости общего объекта /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 …

1
В каком порядке динамический компоновщик Linux ищет пути?
Это не дубликат, потому что имеет дело с особенностью, которую я заметил, когда использую /etc/ld.so.conf. Чтобы получить пути, по которым динамический компоновщик ищет библиотеки, я запускаю команду ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g". Когда /etc/ld.so.confнет путей, перечисленных в нем. Вывод предыдущей команды /lib /usr/lib Я понял, что …

2
Невозможно выполнить двоичный файл в NixOS - нет такого файла или каталога
Я попытался установить текущую версию oracle jre на виртуальную машину под управлением 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 и так …

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


2
Определение запущенных программ, использующих старую версию библиотеки, которую я только что заменил
После установки обновлений по адресу CVE-2014-0160 ( ошибка OpenSSL Heartbleed ) мне пришлось позаботиться о перезапуске всего, что могло бы использовать libssl - во многих сервисах, таких как Apache и мое программное обеспечение VPN, все еще была загружена старая уязвимая библиотека libssl. и мой менеджер пакетов не пытался исправить это. …

2
Как использовать библиотеки, установленные nix во время выполнения?
Я использую nixв «однопользовательском режиме» в системе, где я не root (см. Ниже описание моей настройки nix). Я хотел быстро запустить один из моих двоичных файлов, который динамически связан с библиотекой, которая отсутствует в системе. Итак, я установил библиотеку с nix: $ nix-env -qa 'gmp' gmp-4.3.2 gmp-5.1.3 $ nix-env -i …

1
Влияние статического и динамического связывания на начальный адрес
У меня есть простая программа на Си. Я бегу: $ gcc Q1.c -Wall -save-temps -o Q1 Затем я проверяю сгенерированный исполняемый файл: $ objdump -f Q1 Q1: file format elf32-i386 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x080483b0 Затем я компилирую это со статической связью: $ gcc Q1.c …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.