Сообщение от
Vitamin
2acidrain: давай начнем с терминологии (надо было с этого и начинать...). итак, имеем 3 вида управления кодом программы
1) Статическая линковка. Объектные файлы, созданные заранее, подключаются к бинарнику на этапе компиляции и присутствуют в исполнимом файле. Во время работы не требуется никаких дополнительных движений со стороны программы чтобы подключить эти объектные файлы, просто прямые вызовы на функции. В простейшем случае, объектные файлы, скомпилированные из разных исходных текстов собираются в итоговый бинарник. При подключении одной и той же библиотеки в две разные программы данные физически дублируются. Примеры- a,obj,lib файлы (первое что на ум пришло)
2) Динамическая линковка. Объектные файлы подключаются во время работы программы путем открытия библиотеки (неважно, кто это делает, ОС или само приложение). Дальнейший вызов функций осуществляется на основе имеющегося описателя подключенной библиотеки. При подключении одной и той же библиотеки в две разные программы (для многозадачных ОС), код не дублируется. Примеры- so,dll.
3) Прочее. В частности, отсутствие линковки на уровне бинарных файлов, только на уровне исходных текстов на этапе компиляции. Использование только внутренних функций или функций ОС (в общем случае, если таковая имеется).
Есть вопросы? исправления? дополнения?