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