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

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

124
Как работают номера SO (общий объект)?

Я знаю, что общие объекты в Linux используют «так числа», а именно, что разные версии общего объекта имеют разные расширения, например: example.so.1 example.so.2 Я понимаю, что идея состоит в том, чтобы иметь два разных файла, чтобы в системе могли существовать две версии библиотеки (в отличие от...

102
Где исполняемые файлы ищут общие объекты во время выполнения?

Я понимаю, как определить, включать общие объекты во время компоновки / компиляции. Однако мне все еще интересно, как исполняемые файлы выглядят для общего объекта ( *.soбиблиотек) во время выполнения. Например, мое приложение a.outвызывает функции, определенные в lib.soбиблиотеке. После компиляции...

70
Получение сообщения «Не найдено» при запуске 32-разрядного двоичного файла в 64-разрядной системе

В настоящее время у меня странная проблема с Debian (wheezy / amd64). Я создал chroot для установки сервера (я не могу дать более подробную информацию об этом, извините). Давайте назовем его путь /chr_path/. Чтобы упростить задачу, я инициализировал этот chroot с помощью debootstrap (также wheezy /...

23
Какой системный вызов используется для загрузки библиотек в Linux?

В straceвыходных данных пути к библиотекам, которые вызывают исполняемые файлы, находятся в вызовах open(). Это системный вызов, используемый исполняемыми файлами, которые динамически связаны? Как насчет dlopen()? open()не вызов, который я бы предположил, сыграл бы роль в исполнении...

21
Найти, где находится символ общей библиотеки, определенный в действующей системе / перечислить все символы, экспортированные в систему

По сути, это два вопроса в одном - потому что, если я смогу перечислить все символы, экспортируемые в систему, вместе с их общим путем к библиотеке, я мог бы просто получить grepтакой вывод. Для символов ядра, я думаю, это несколько проще - потому что мы всегда можем cat /proc/kallsymsполучить...

19
Исполняемый файл Linux завершается с ошибкой «Файл не найден», даже если файл есть и находится в переменной PATH

Я хочу запустить wineисполняемый файл (Версия 2.12), но получаю следующую ошибку ( $= приглашение оболочки): $ wine bash: /usr/bin/wine: No such file or directory $ /usr/bin/wine bash: /usr/bin/wine: No such file or directory $ cd /usr/bin $ ./wine bash: ./wine: No such file or directory Тем не...

18
Как обновить разделяемую библиотеку без сбоев?

Здесь говорится, что вы можете переписать исполняемый файл, и процесс будет работать нормально - он будет перечитан при перезапуске процесса. Однако, когда я пытаюсь заменить двоичный файл во время работы процесса (с помощью scp, от dev до тестового сервера), он говорит «file busy». И если я...

17
Почему системы Unix / Linux не перемещаются по каталогам, пока не найдут требуемую версию связанной библиотеки?

У меня есть двоичный исполняемый файл с именем "альфа", который требует связанной библиотеки (libz.so.1.2.7), который находится на /home/username/myproduct/lib/libz.so.1.2.7 Я экспортирую то же самое в свой экземпляр терминала, прежде чем порождать мой двоичный исполняемый файл, выполнив следующую...

15
Установка двух glibc вместе с Debian / Ubuntu

Можно ли установить и использовать две разные версии glibc на одной машине? Где одна версия используется только для запуска устаревшего программного обеспечения, которое использует старые двоичные файлы glibc? Можно ли сделать это с помощью менеджера пакетов (что-то вроде «установить этот пакет и...

14
Могу ли я использовать свой собственный ld.so.cache?

ldconfig имеет два интересных варианта: -f conf Use conf instead of /etc/ld.so.conf. -C cache Use cache instead of /etc/ld.so.cache. Я попытался скопировать /etc/ld.so.confв свой домашний каталог, и отредактировал его, чтобы включить пути к моим локальным библиотекам, например,...

13
Linux, GNU GCC, ld, версии скриптов и двоичный формат ELF - Как это работает?

Я пытаюсь узнать больше о версиях библиотек в Linux и о том, как заставить все это работать. Вот контекст: - У меня есть две версии динамической библиотеки, которые предоставляют один и тот же набор интерфейсов, скажем, libsome1.soи libsome2.so. - Приложение связано с libsome1.so. - Это приложение...

13
Узнайте, находится ли библиотека в пути

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

13
Использование альтернативного libc с хаки ld-linux.so; более чистый метод?

У меня есть устаревшая система с очень старым glibc, которую мы не можем модернизировать, не взяв на себя кучу работ по тестированию / валидации. Мне нужно было запускать новые программы (например, Java 1.7) в этой системе несколько раз. Я выбрал решение chroot, где я упаковываю все необходимые...

12
Как сам динамический компоновщик / загрузчик может быть динамически связан как сообщено `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 =>...

11
Невозможно выполнить двоичный файл в 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...

11
Общие библиотеки ELF - мотивация для PLT

Может ли самоизменяющийся код использоваться для ускорения вызова функций в динамически связанных библиотеках? Насколько я понимаю, разделяемые библиотеки ELF используют своего рода таблицу косвенных переходов (таблица связывания процедур или PLT), чтобы обеспечить ленивое связывание библиотечных...

11
В каком порядке динамический компоновщик Linux ищет пути?

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