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

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

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

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

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


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

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

4
Исполняемый файл 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 Тем не менее, файл там: …

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

1
Почему системы Unix / Linux не перемещаются по каталогам, пока не найдут требуемую версию связанной библиотеки?
У меня есть двоичный исполняемый файл с именем "альфа", который требует связанной библиотеки (libz.so.1.2.7), который находится на /home/username/myproduct/lib/libz.so.1.2.7 Я экспортирую то же самое в свой экземпляр терминала, прежде чем порождать мой двоичный исполняемый файл, выполнив следующую команду. export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH Теперь, когда я порождаю другое приложение "bravo", которое требует ту же …

9
Проблема при запуске java в Debian: «ошибка при загрузке общих библиотек: libjli.so»
Я пытаюсь запустить Java: $ java -version java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory $ ldd /usr/lib/jvm/java-6-openjdk/jre/bin/java linux-gate.so.1 => (0xb779f000) libz.so.1 => /usr/lib/libz.so.1 (0xb7780000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7767000) libjli.so => /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libjli.so (0xb7762000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb775e000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7603000) …

1
Установка двух glibc вместе с Debian / Ubuntu
Можно ли установить и использовать две разные версии glibc на одной машине? Где одна версия используется только для запуска устаревшего программного обеспечения, которое использует старые двоичные файлы glibc? Можно ли сделать это с помощью менеджера пакетов (что-то вроде «установить этот пакет и его зависимости, чтобы /opt/old-glibc) вместо того, чтобы управлять …


2
Могу ли я использовать свой собственный 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в свой домашний каталог, и отредактировал его, чтобы включить пути к моим локальным библиотекам, например, /home/syockit/local/usr/libи т. Д. И побежал ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache и впоследствии, чтобы …

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для динамической загрузки, …

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