После успешного завершения компилятора, запускается другая программа, называемая компоновщиком. Задача компоновщика — объединить все объектные файлы и создать желаемый выходной файл (обычно исполняемый файл). Этот процесс называется компоновкой ("линковкой"), который содержит несколько этапов:
- Компоновщик считывает каждый из объектных файлов, созданных компилятором, и проверяет их корректность.
- Компоновщик гарантирует правильное разрешение всех межфайловых зависимостей. Например, если вы определяете что-то в одном файле
.cpp
, а затем используете это в другом файле .cpp
, компоновщик соединяет их вместе. Если компоновщику не удастся соединить ссылку на что-либо с его определением, вы получите ошибку компоновщика, и процесс связывания будет прерван.
- Компоновщик связывает файлы библиотеки. Файл библиотеки представляет собой набор предварительно скомпилированного кода, «упакованного» для повторного использования в других программах.
C++ поставляется с обширной библиотекой, называемой
Стандартной библиотекой C++ (обычно сокращается до стандартной библиотеки), которая предоставляет набор полезных возможностей для использования в ваших программах. Одной из наиболее часто используемых частей стандартной библиотеки C++ является библиотека
iostream
, которая содержит функциональные возможности для печати текста на мониторе и получения ввода от пользователя с клавиатуры. Почти каждая программа, написанная на C++, в той или иной форме использует стандартную библиотеку, поэтому стандартная библиотека часто подключается к вашим программам. Большинство компоновщиков автоматически связываются со стандартной библиотекой, как только вы используете любую ее часть, поэтому вам, как правило, не о чем беспокоиться.
Вы также можете при желании связать другие библиотеки. Например, если вы собираетесь написать программу, воспроизводящую звуки, вам, вероятно, не захочется писать собственный код для чтения звуковых файлов с диска, проверки их достоверности или выяснения того, как маршрутизировать звуковые данные. к операционной системе или оборудованию, чтобы воспроизвести через динамик - это будет большая работа! Вместо этого вы, вероятно, загрузите библиотеку, которая уже знает, как делать эти вещи, и будете использовать ее.