Статическая сборка

редактировать

A статическая сборка есть скомпилированная версия программы, которая была статически связана с библиотеками.

Содержание
  • 1 Связывание
  • 2 Динамическое связывание
  • 3 Статическое построение
  • 4 См. Также
  • 5 Ссылки
Связывание

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

  • Определенные или экспортированные символы - это функции или переменные, которые присутствуют в модуле, представленном объектом, и которые должны быть доступны для использования другими модулями.
  • Неопределенные или импортированные символы - это функции или переменные, которые вызываются или на которые ссылается этот объект, но не определены внутри. Программа

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

Динамическое связывание

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

Динамическое связывание дает три преимущества:

  • Часто используемые библиотеки (например, стандартные системные библиотеки) нужно хранить только в одном месте, а не дублировать в каждом отдельном двоичном файле.
  • Если если библиотека обновлена ​​или заменена, все программы, использующие ее динамически, немедленно получат выгоду от исправлений. Сначала необходимо повторно связать статические сборки.
  • Размер двоичного файла исполняемого файла меньше, чем у его статически связанного аналога.
Статическая сборка

В статически построенная программа, динамического связывания не происходит: все связывания были выполнены во время компиляции.

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

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

См. Также
Ссылки
  • Левин, Джон Р. (2000) [Октябрь 1999 г.]. Линкеры и загрузчики. Серия Морган Кауфманн в программной инженерии и программировании (1-е изд.). Сан-Франциско, США: Морган Кауфманн. ISBN 1-55860-496-0. ISBN 978-1-55860-496-4.
  • Керен, Гай (2002). Создание и использование статических и общих библиотек "C". Маленькая группа программистов Unix (LUPG).
Последняя правка сделана 2021-06-09 10:03:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте