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

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

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

One Solution collect form web for “Можно ли загружать две библиотеки общих ресурсов приложения во время выполнения?”

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

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

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

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

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

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

  • «Который» эквивалентен для разделяемых библиотек
  • Как определить, где исполняемый файл выполняет поиск общей библиотеки?
  • Есть ли полезные метаданные внутри общих объектов, и если да, то как их извлечь?
  • Не удается найти файл общих объектов, даже если он находится в пути к библиотеке
  • ldconfig не соответствует пользовательской символической ссылке
  • Получить список функций в общей библиотеке?
  • Программа связана с двумя версиями одной и той же библиотеки?
  • Как обновить общую библиотеку без сбоев?
  • libcurl.so.4 неопределенная опорная ошибка
  • patch: «дескриптор« плохих файлов »в сочетании с каналом и LD_PRELOAD / libtrash
  • Команда для отображения каталогов, в которых нужно искать общие библиотеки?
  • Linux и Unix - лучшая ОС в мире.