Arhn - архитектура программирования

Разрешение символов двухуровневого пространства имен Mach-O в ELF/linux

Кто-нибудь знает эквивалент разрешения символов двухуровневого пространства имен Mach-O в ELF/linux? Мне нужен код, который ссылается на lib+sym, а не на sym.

Я пытаюсь сделать то, что лучше всего можно описать как предварительную компиляцию того, что обычно является JIT-компиляцией. Я хотел бы получить привязку символов во время компиляции, что обычно выполняется с помощью dlopen/dlsym. Однако могут возникнуть коллизии, которых хорошо удается избежать с помощью dlopen/dlsym.

Кажется, что ELF на самом деле не хватает этого, и есть материал VERSION, но любые обходные пути или предложения будут оценены.

06.08.2011

  • Я думаю, что есть много людей, которые знают об ELF и Linux, но не имеют ни малейшего представления о Mach-O, таких как я. Возможно, вы захотите расширить свой вопрос, чтобы кратко объяснить, чего именно вы пытаетесь достичь. 07.08.2011
  • Я только что обновил его, чтобы сделать это... последнее предложение первого абзаца объясняет цель, а следующие два абзаца объясняют, почему. 07.08.2011
  • Ваш вопрос теперь превратился для меня в полную тарабарщину (и я понимаю и ELF, и (в гораздо меньшей степени) Mach-O). Вряд ли вы получите хороший ответ на вопрос в его нынешнем виде. Я предлагаю вам попытаться расширить и уточнить его, возможно, с примером того, что вы фактически пытаетесь сделать. 07.08.2011
  • Скажем, вы компилируете традиционно интерпретируемый язык в машинный код. Этот язык имеет FFI, который позволяет вам импортировать символы с точки зрения путь_к_библиотеке + имя_символа. Цель состоит в том, чтобы скомпилировать эту семантику ссылок на символы до динамической компоновки для конкретной платформы без использования dlopen/dlsym. Mach-O имеет механизм устранения неоднозначности, который позволяет вам указывать неразрешенные символы таким образом, что делает конфликты символов между динамическими библиотеками не проблемой на Mac. В Windows нет другого механизма, кроме LoadLibrary/GetProcAddress, так что здесь нет проблем. Возникает вопрос: можно ли подобное сделать с ELF? 08.08.2011
  • Спасибо за разъяснение. ELF находится в точно таком же положении, что и Windows — нет другого механизма, кроме dlopen/dlsym. 08.08.2011
  • Это неправильно. Windows находится НЕ в том же положении, поскольку у нее есть Acitvation Context API, который позволяет приложениям получать именно ту версию символа, для которой она была скомпилирована: msdn.microsoft.com/en-us/library/windows/desktop/ 06.10.2016

Ответы:


1

Эквивалента ELF нет (и обычно он не нужен).

07.08.2011
  • Хотя это правда, что эквивалента нет, я бы оспорил утверждение, что он не нужен. Проблемы с плоским пространством имен (описано здесь: stpeterandpaul.ca/tiger/releasenotes/DeveloperTools/) вполне реальны в Linux. 06.10.2016

  • 2

    Похоже, вы хотите dlmopen.

    30.11.2017
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..