Как работает динамическое связывание, его использование и как и зачем создавать dylibC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как работает динамическое связывание, его использование и как и зачем создавать dylib

Сообщение Anonymous »

Я прочитал несколько статей о переполнении стека и прочитал в Интернете о динамическом связывании. И вот что я вынес из всего этого чтения:

Динамическое связывание — это метод оптимизации, который использовался для полного использования преимуществ виртуальной памяти системы. Один процесс может делиться своими страницами с другими процессами. Например, libc++ должен быть связан со всеми программами на C++, но вместо копирования исполняемого файла в каждый процесс его можно динамически связывать со многими процессами через общие виртуальные страницы.

Однако это приводит меня к следующим вопросам
  • Когда программа на C++ скомпилировано. Он должен иметь ссылки на функции и код библиотеки C++ (скажем, например, код библиотеки потоков). Как компилятор обеспечивает наличие этих ссылок в исполняемом файле? Не приводит ли это к циклической зависимости между компилятором и операционной системой? Поскольку компилятор должен сделать ссылку на динамическую библиотеку в исполняемом файле.
  • Как и когда вы будете использовать динамическую библиотеку? Как его сделать? Какая конкретная команда компиляции используется для создания такого файла из стандартного файла *.cpp?
  • Обычно, когда я устанавливаю библиотеку, существует файл lib/< Каталог /code> с файлами *.a и файлами *.dylib (в mac-OSX). Как мне узнать, на какие из них следует ссылаться статически, как с обычным файлом *.o, а с какими предполагается связываться динамически? Я предполагаю, что файлы *.dylib являются динамическими библиотеками. Какой флаг компилятора можно использовать для ссылки на них?
  • Для чего нужны флаги -L и -l? Что значит указать, например, флаг -lusb в командной строке?
Если вам нравится этот вопрос спрашивает слишком много вещей одновременно, пожалуйста, дайте мне знать. Я был бы полностью согласен, если бы разделил этот вопрос на несколько. Я просто задаю их вместе, потому что чувствую, что ответ на один вопрос ведет к другому.

Подробнее здесь: https://stackoverflow.com/questions/365 ... ke-a-dylib
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»