Ssylka

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

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

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

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

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


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

18604Является ли рекордная скидка на Garmin Instinct 3 Solar лучшим предложением ноября? 18603Могла ли детская смесь ByHeart вызвать национальную вспышку ботулизма? 18602Готовы ли банки доверить агентскому ИИ управление деньгами клиентов? 18601Как сезонные ветры создают миллионы загадочных полос на Марсе? 18600Как тело человека превращается в почву за 90 дней? 18599Как ваш iPhone может заменить паспорт при внутренних перелетах по США? 18598Мозговой шторм: что происходит, когда мозг отключается от усталости 18597Раскрыта асимметричная форма рождения сверхновой 18596Скидки Ninja: как получить идеальную корочку и сэкономить на доставке 18595Почему работа на нескольких работах становится новой нормой? 18594Записная книжка против нейросети: ценность медленного мышления 18593Растущая брешь в магнитном щите земли 18592Каким образом блокчейн-транзакции стали новым инструментом для кражи криптовалюты? 18591Что скрывается за ростом прибыли The Walt Disney Company? 18590Является ли ИИ-архитектура, имитирующая мозг, недостающим звеном на пути к AGI?