Минимальный объем информации, необходимый для создания (динамической) ссылки?

StackOverflow https://stackoverflow.com/questions/2221438

  •  19-09-2019
  •  | 
  •  

Вопрос

Это вопрос, с которым я сталкивался неоднократно, обычно касающийся подключаемых модулей, но недавно я столкнулся с ним, пытаясь устранить некоторые проблемы с системой сборки.Меня беспокоят в первую очередь системы на базе * nix, но я полагаю, что это относится и к Windows.

Вопрос в том, каков минимальный объем информации, необходимый для выполнения динамической компоновки?Я знаю, что дистрибутивы Linux, такие как Debian, имеют просто 'i686', и этого достаточно.Однако я полагаю, что здесь есть некоторая неявная информация, и я, вероятно, не смогу выполнить динамическое связывание любого общего объекта, пока они скомпилированы с использованием -march=i686, смогу ли я?

Итак, что должно быть подобрано правильно, чтобы я мог успешно загрузить общий объект?Я знаю, что для c ++ даже компилятор (а иногда и версия) должен совпадать из-за искажения имен, но я отчасти надеялся, что это не относится к c.

Любые мысли приветствуются.

Редактировать:
Ответ Нила заставил меня понять, что на самом деле я говорю не о динамическом связывании, или, скорее, вопрос двоякий,

  1. что необходимо для статического связывания, и
  2. что необходимо для динамического связывания

Думаю, я возлагаю больше надежд на первое.

Это было полезно?

Решение

Ну, как минимум, код должен быть скомпилирован для того же семейства процессоров, и вам нужно знать названия библиотеки и функции.Вдобавок ко всему, вам нужен тот же ABI.Вы должны знать, что, несмотря на то, что думают люди, стандарт C не определяет ABI, и вполне возможно, что два компилятора C (или версии одного компилятора) будут придерживаться стандарта, работать на одной платформе, но иметь разные ABI.

Что касается точного указания деталей архитектуры - я должен признать, что никогда этого не делал.Планируете ли вы распространять двоичные библиотеки на разных вариантах Linux?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top