Что означает «модуль статически или динамически связывается с разделяемой библиотекой»? - PullRequest
0 голосов
/ 28 марта 2011

Цитируется из ответа на сообщение

3. Затем вызывающий модуль статически или динамически связывается с общей библиотекой.

4.Как только ваша вызывающая библиотека привязана к общей библиотеке, она может указать, что она хочет привязаться к определенной точке входа.Обычно это делается по имени, однако большинство платформ также предлагают возможность привязки по индексу (быстрее, но еще более хрупко, если ваш модуль изменяется и точки входа переупорядочиваются).

5.В общем случае вы также объявляете функциюВы хотите вызвать свой модуль куда-нибудь, чтобы ваш язык мог выполнять статическую проверку типов, знать, что такое соглашение о вызовах и т. д.

Мне было интересно

  1. что делает "модуль статически или динамически связывается с разделяемой библиотекой?Означает ли это привязка имени, , т. Е. Сопоставление идентичности в каком-либо модуле с объектами (кодом или данными) в общей библиотеке, или связывание из какого-либо модуля с библиотекой общего доступа?
  2. Где я могу найти более похожее на википедию описание привязки по имени и по индексу?

Спасибо и всего наилучшего!

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

Динамическое и статическое связывание - это методы совместного использования библиотечного кода в современных компьютерных операционных системах.

Динамическое связывание происходит во время выполнения.Он тратит немного дополнительной работы во время запуска на некоторые приятные функции, такие как возможность исправления / замены библиотеки, которая, в свою очередь, может исправить или добавить функции в приложения, которые связаны (привязаны) с ней.

Статическийсвязывание - это то, где части библиотеки копируются в исполняемый файл.Это быстрее для запуска и иногда более удобно для распространения, потому что вам не нужно беспокоиться о том, есть ли у получателя все общие библиотеки.Это также может сэкономить место в некоторых случаях.Это характерно для встроенных приложений.

http://en.wikipedia.org/wiki/Dynamic-link_library http://en.wikipedia.org/wiki/Static_library

Привязка по имени относится к процессу связывания функций, переменных и констант из библиотеки в приложение, модульприложение или другая библиотека.По сути, библиотека - это архив кода, и есть таблица, которая указывает на каждый скомпилированный бит расположения кода в библиотеке, а компоновщик использует имена для поиска нужных битов.Как телефонная книга =)

Связывание и связывание используются взаимозаменяемо во многих контекстах.

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

Некоторые системы привязки могут реализовать кэш адресов для ускорения поиска.Хорошим примером является ARP-кеш вашего рабочего стола, который кэширует IP-адреса, которые искали по имени с помощью DNS-сервера (по совпадению, наиболее часто используемый DNS-сервер называется «bind».)

Языки сценариев часто связывают вещипо имени, а не по ссылке, потому что затраты на выполнение поиска по имени не так уж и велики, если интерпретировать сам язык.

2 голосов
/ 28 марта 2011

Привязка означает загрузку и получение адреса для общей библиотеки. Обычно во время компиляции программа создает ссылку на общую библиотеку, это называется статическим связыванием.

Динамическая привязка - это когда программа во время выполнения определяет имя разделяемой библиотеки и затем загружает ее

...