Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Ссылка [ править ]

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

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

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

Динамическое связывание [ править ]

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

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

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

Статическое здание [ править ]

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

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

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

См. Также [ править ]

Ссылки [ править ]

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