2016-12-27 5 views
0

Я создал проект приложения Windows в визуальной студии. Библиотека OpenSSL (размер: 15 МБ) статически связана с проектом приложения.Почему исполняемый файл меньше, чем библиотека, статически связанная с проектом приложения?

Но, все еще размер приложения (исполняемый файл) .exe-файл ~ 2 МБ.

Как это возможно? Может ли кто-нибудь объяснить мне, как это делает линкер?

ответ

3

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

В принципе, статическая библиотека - это просто контейнер объектных файлов. Каждый объектный файл содержит код для одного блока компиляции.

+2

* Каждый объектный файл содержит код для одной функции * Uhm не очень, обычно каждый объектный файл является результатом компиляции единственной единицы перевода (т. Е. Файла .c/.cpp). –

+1

Вот как работают статические библиотеки на любой платформе, которую я знаю ... –

+2

@MatteoItalia: Спасибо, что указали на ошибку в * Каждый объект ... *. Я обновил свой ответ соответственно. – Codo

 Смежные вопросы

  • Нет связанных вопросов^_^