Статическая сборка
Статическая сборка — это скомпилированная версия программы, статически скомпонованная с библиотеками.
Связывание [ править ]
В информатике сгенерированных связывание означает взятие одного или нескольких объектов, компиляторами , и сборку их в одну исполняемую программу. Объекты представляют собой программные модули, содержащие машинный код и определения символов , которые бывают двух разновидностей:
- Определенные или экспортированные символы — это функции или переменные , которые присутствуют в модуле, представленном объектом, и которые должны быть доступны для использования другими модулями.
- Неопределенные или импортированные символы — это функции или переменные, которые вызываются или на которые ссылается этот объект, но не определены внутри.
Затем программа компоновщика разрешает ссылки на неопределенные символы , определяя, какой другой объект определяет рассматриваемый символ, и заменяя заполнители адресом символа. Линкеры могут брать объекты из коллекции, называемой библиотекой . Итоговая программа включает не всю библиотеку, а только те объекты из нее, которые нужны. Существуют библиотеки для различных целей, и одна или несколько системных библиотек обычно подключаются по умолчанию.
Динамическое связывание [ править ]
Современные среды операционной системы допускают динамическое связывание или отсрочку разрешения некоторых неопределенных символов до запуска программы. Это означает, что исполняемый файл по-прежнему содержит неопределенные символы, а также список объектов или библиотек, которые предоставляют для них определения. Загрузка программы также загрузит эти объекты/библиотеки и выполнит окончательное связывание.
Динамическое связывание дает три преимущества:
- Часто используемые библиотеки (например, стандартная системная библиотека ) должны храниться только в одном месте, а не дублироваться в каждом двоичном файле.
- Если библиотека будет обновлена или заменена, все программы, использующие ее динамически, сразу же получат пользу от исправлений. Статические сборки необходимо сначала перелинковать.
- Размер двоичного исполняемого файла меньше, чем его статически связанный аналог.
Статичное здание [ править ]
В статически созданной программе динамическое связывание не происходит: все привязки выполняются во время компиляции .
Статические сборки имеют очень предсказуемое поведение (поскольку они не полагаются на конкретную версию библиотек, доступных в конечной системе) и обычно встречаются в инструментах криминалистики и безопасности, чтобы избежать возможного заражения или сбоя из-за сломанных библиотек на проверяемой машине. Та же гибкость, которая позволяет обновленной библиотеке использовать все динамически подключаемые приложения, может также препятствовать правильной работе приложений, предполагающих наличие определенной версии конкретной библиотеки. Если для обеспечения корректной работы каждое приложение в системе должно иметь собственную копию динамической библиотеки, преимущества динамического связывания являются спорными.
Еще одним преимуществом статических сборок является их переносимость: после компиляции окончательного исполняемого файла больше нет необходимости хранить файлы библиотеки, на которые ссылается программа, поскольку все соответствующие части копируются в исполняемый файл. В результате при установке статически собранной программы на компьютер пользователю не нужно загружать и устанавливать дополнительные библиотеки: программа готова к запуску.
См. также [ править ]
- Статическая библиотека
- Библиотека
- Украшение имени
- Таблица перемещения
- Библиотека времени выполнения
- Система выполнения
Ссылки [ править ]
- Левин, Джон Р. (2000) [октябрь 1999 г.]. Линкеры и загрузчики . Серия Моргана Кауфмана по разработке программного обеспечения и программированию (1-е изд.). Сан-Франциско, США: Морган Кауфманн . ISBN 1-55860-496-0 . ISBN 978-1-55860-496-4 .
- Керен, Гай (2002). Создание и использование статических и общих библиотек «C» . Маленькая группа программистов Unix (LUPG).