Гайд Перевод Learncpp.com: раздел 0.5 // Введение в компилятор, компоновщик и библиотеки. На русском.

Dreammmless.
Эксперт
Статус
Оффлайн
Регистрация
19 Мар 2019
Сообщения
2,956
Реакции[?]
962
Поинты[?]
1K
Предыдущая часть от Dreammm - https://yougame.biz/threads/151743/.
Следующая часть от Dreammm - https://yougame.biz/threads/151807/
Оригинальная статья -
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

Продолжая наше обсуждение этой диаграммы из предыдущего урока (0.4 -- введение в разработку на C++ ):
1596730216513.png
Давайте обсудим шаги 4-7.

Шаг 4: Компиляция нашего исходного кода

Для компиляции программы на языке C++ мы используем компилятор на языке C++. Компилятор C++ последовательно проходит через каждый исходный код (.cpp) файл в вашей программе и выполняет две важные задачи:

Во-первых, он проверяет ваш код, чтобы убедиться, что он следует правилам языка C++. Если это не так, компилятор выдаст вам ошибку (и соответствующий номер строки), чтобы помочь точно определить, что нуждается в исправлении. Процесс компиляции также будет прерван до тех пор, пока ошибка не будет исправлена.

Во-вторых, он переводит исходный код C++ в файл машинного языка, называемый объектным файлом. Объектные файлы обычно имеют имя "имя.o" или "имя.obj", где имя совпадает с именем .cpp-файла, из которого он был создан.

Если бы в вашей программе было 3 .cpp файлы, компилятор будет генерировать 3 объектных файла:
lesson 5.png
Компиляторы C++ доступны для многих различных операционных систем. В ближайшее время мы обсудим установку компилятора, так что сейчас в этом нет необходимости.

Шаг 5: Cвязывание объектных файлов и библиотек

После того как компилятор создает один или несколько объектных файлов, включается другая программа, называемая компоновщиком. Работа компоновщика состоит из трех частей:

Во-первых, взять все объектные файлы, сгенерированные компилятором, и объединить их в единую исполняемую программу.
51.png
Во-вторых, помимо возможности связывать объектные файлы, компоновщик также способен связывать библиотечные файлы. Файл библиотеки - это набор предварительно скомпилированного кода, который был "упакован" для повторного использования в других программах.

Основной язык C++ на самом деле довольно мал и лаконичен (и вы узнаете многое из этого в этих уроках). Однако C++ также поставляется с обширной библиотекой, называемой стандартной библиотекой C++ (обычно сокращенной до стандартной библиотеки), которая предоставляет дополнительные функциональные возможности, которые вы можете использовать в своих программах. Одной из наиболее часто используемых частей стандартной библиотеки C++ является библиотека iostream, которая содержит функциональные возможности для печати текста на мониторе и получения ввода с клавиатуры от пользователя. Почти каждая написанная программа на C++ использует стандартную библиотеку в той или иной форме, поэтому очень часто стандартная библиотека связывается с вашими программами. Большинство компоновщиков автоматически связываются в стандартной библиотеке, как только вы используете какую-либо ее часть, так что это обычно не то, о чем вам нужно беспокоиться.

Вы также можете опционально ссылаться на другие библиотеки. Например, если вы собираетесь написать программу, которая воспроизводит звуки, вы, вероятно, не захотите писать свой собственный код для чтения звуковых файлов с диска, проверять, чтобы они были действительны, или выяснять, как направить звуковые данные в операционную систему или аппаратное обеспечение для воспроизведения через динамик - это займёт много времени! Вместо этого вы, вероятно, загрузили бы библиотеку, которая уже знала, как делать эти вещи, и использовали бы ее. Мы поговорим о том, как создавать ссылки в библиотеках (и создавать свои собственные!) в
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

В-третьих, компоновщик обеспечивает правильное разрешение всех межфайловых зависимостей. Например, если вы определяете что-то в одном .cpp файле, а затем использовать его в другом .cpp файле, компоновщик соединяет их вместе. Если компоновщик не может связать ссылку на что-то с его определением, вы получите ошибку компоновщика, и процесс связывания будет прерван.

Как только компоновщик закончит связывать все объектные файлы и библиотеки (при условии, что все идет хорошо), у вас будет исполняемый файл, который вы сможете запустить!

Для сложных проектов некоторые среды разработки используют makefile, который представляет собой файл, описывающий, как построить программу (например, какие файлы компилировать и связывать или иным образом обрабатывать различными способами). Целые книги были написаны о том, как писать и поддерживать файлы Makefile, и они могут быть невероятно мощным инструментом. Однако, поскольку файлы Makefile не являются частью основного языка C++ и вам не нужно использовать их для продолжения работы, мы не будем обсуждать их в рамках этой серии уроков.

Шаги 6 и 7: Тестирование и отладка

Это самая веселая часть (надеюсь)! Вы можете запустить свой исполняемый файл и посмотреть, дает ли он результат, который вы ожидали!

Если ваша программа работает, но не работает правильно, то пришло время для некоторой отладки, чтобы выяснить, что не так. В ближайшее время мы более подробно обсудим, как тестировать ваши программы и как их отлаживать

Интегрированные среды разработки (IDE)

Обратите внимание, что все шаги 3, 4, 5 и 7 включают программное обеспечение (редактор, компилятор, компоновщик, отладчик). Хотя вы можете использовать отдельные программы для каждого из этих видов деятельности, программный пакет, известный как интегрированная среда разработки (IDE), объединяет и объединяет все эти функции вместе. Мы обсудим IDE`ы и установим один из них в следующем разделе.


сообщение удалено в целях сберечь психику одному человеку
 
Последнее редактирование:
Сверху Снизу