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

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

Связывание

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

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

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

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

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

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

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

Статическое здание

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

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

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

Смотрите также

Рекомендации

  • Левин, Джон Р. (2000) [октябрь 1999]. Линкеры и загрузчики. Серия Морган Кауфманн в программной инженерии и программировании (1-е изд.). Сан-Франциско, США: Морган Кауфманн. ISBN  1-55860-496-0. ISBN  978-1-55860-496-4.
  • Керен, Гай (2002). Создание и использование статических и общих библиотек "C". Маленькая группа программистов Unix (LUPG).