Ssylka

Основы сборки Си/Си++: библиотеки и их виды

Сборка проектов на Си/Си++ включает в себя этапы препроцессинга, компиляции и линковки. Конечным результатом может быть исполняемый файл или библиотека. Библиотеки бывают динамические (.so,.dll) и статические (.a). Динамические библиотеки загружаются в память во время выполнения, экономя ресурсы, так как их код используется совместно несколькими программами. Статические библиотеки добавляют код в исполняемый файл, увеличивая его размер, но обеспечивая переносимость.
Основы сборки Си/Си++: библиотеки и их виды
Изображение носит иллюстративный характер

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

Для создания динамической библиотеки используется опция -fPIC при компиляции. Важно понимать искажение имен (name mangling) в Си++, где имена функций и методов кодируются, чтобы передать информацию о типах аргументов. Утилита c++filt используется для декодирования этих имен. Разделение кода на несколько файлов требует использования заголовочных файлов (.h,.hpp), в которых содержатся прототипы функций и классов.

Компиляция проекта на Си/Си++ может осуществляться вручную, но для больших проектов рекомендуется использовать утилиту make и Makefile для автоматизации сборки, которая отслеживает изменённые файлы и перекомпилирует только их. Для полной изоляции сборки от системы можно использовать Docker.


Новое на сайте

17902Lufthansa заменит 4000 административных сотрудников искусственным интеллектом 17901Каков истинный срок годности генетической информации? 17900Сможет ли закон догнать искусственный интеллект, предлагающий психотерапию? 17899Цепная реакция заражения листерией из-за одного поставщика 17898Холодный расчет: как современная наука изменила правила стирки 17897Деревянная начинка: массовый отзыв корн-догов из-за угрозы травм 17896Случайное открытие, спасшее 500 миллионов жизней 17895Мастерство мобильной съемки: полное руководство по камере iPhone 17894Что мог рассказать личный набор инструментов охотника эпохи палеолита? 17893Почему крупнейшая звездная колыбель млечного пути производит непропорционально много... 17892Обречены ли мы есть инжир с мертвыми осами внутри? 17891Почему AI-помощникам выгодно лгать, а не признавать незнание? 17890Является ли творчество искусственного интеллекта предсказуемым недостатком? 17889Как каланы цепляются за надежду? 17888Расшифрованный код древнего Египта