Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Типы линковок, когда и какую использовать


Автор: Atiskara 6.4.2010, 06:38
Цитата(Lazin @ 24.10.2008,  12:29)
Во первых, следует пояснить, что (почти)любая программа на с++ использует стандартную библиотеку - c runtime library, которая содержит набор функций, используемых программой. Например функции для работы с динамической памятью, со строками, с файлами и много чего еще. Эта библиотека может компоноваться либо динасически, либо статически. 

а какие преимущества и недостатки у этих компоновок? И что предпочтительнее в каких случаях использовать?

Автор: bsa 6.4.2010, 11:53
Динамическая линковка используется, когда твоя программа имеет несколько модулей, использующих одни и те же функции. Их и есть смысл выделить в отдельную динамическую библиотеку. В этом случае сокращается место занимаемое программой. Но не все ОС поддерживают динамические библиотеки.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)