Intereting Posts
xreader закрывается после компиляции pdflatex Добавление метки времени в файл журнала? Что произойдет, если rsync планирует сделать резервную копию, но удаленное местоположение недоступно? Где я могу найти a) мой журнал SMTP и / или b) определить / переключить, будет ли SMTP регистрироваться вообще Имя пути в сценарии оболочки содержит дополнительные символы при запуске скрипта Невозможно добавить раскладку клавиатуры на Cinnamon vimdiff – Пользовательское имя файла возможно во время экспорта? Декомпилировать / запустить исполняемый файл MIPS под x86_64 Ubuntu `echo test?` печатает `test2`, но` ls test? 'ничего не печатает Grep -m 1 не работает «Destination Host Unreachable» при проверке беспроводного маршрутизатора Аналоговый PCI от Linux Python Настройка ulimits без PAM Нужен сценарий Awk или Unix для транспонирования / поворота в следующем шаблоне Может ли GPM использоваться в эмуляторе?

Можно ли загружать две библиотеки общих ресурсов приложения во время выполнения?

У меня есть 2 приложения, которые говорят, что A1, A2 разделяют один общий объект (скажем, lib1), который загружается в приложение во время выполнения. A1 загрузить lib1 с помощью dlopen успешно. Теперь A2 хочет загрузить библиотеку. Может ли A2? (Поскольку lib1 загружается в адресное пространство A1). Что делать, если A1 загружается с использованием RTLD_LOCAL. Может ли A2 загрузить lib?

Я новичок в этой области, пожалуйста, дайте мне указания

Да, конечно. Из статьи Википедии о библиотеках :

Общая библиотека или общий объект – это файл, который предназначен для совместного использования исполняемыми файлами и файлами дополнительных общих объектов

Другими словами, вся причина, по которой они называются «разделяемыми», заключается в том, что их используют более одного исполняемого файла.

Из документов для RTLD_LOCAL :

Символы, определенные в этой библиотеке, не доступны для разрешения ссылок в впоследствии загруженных библиотеках.

Флаг RTLD_LOCAL для dlopen() просто указывает, что когда A1 загружает lib1 , если он определяет, скажем, функцию f1() , а затем A1 загружает lib2 , он не может использовать f1() из lib1 , поскольку это было загружено локальным ,