Предположим, что вы написали программу на C++ в любой из ваших любимых IDE, нажали кнопку запуска, и БУУМ результат отображается на экране. Задумывались ли вы когда-нибудь, как этот код скомпилирован, чтобы процессор может выполнить его и создать файл «.exe для Windows»?
В этой статье мы вместе узнаем, что происходит, когда мы нажимаем кнопку запуска до выполнения кода.

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

1 — предварительная обработка

мы можем рассматривать этот шаг как подготовку исходного кода для компилятора, так как этот шаг создает чистый код C++ для компиляции,
Он обрабатывает все строки в исходном коде, начинающиеся с # директив, например,
если исходный код содержит строку #include ‹stdio.h›,
вывод этой строки на этапе предварительной обработки будет выглядеть как
'insert file /usr/include/stdio.h' .
Он также производит вывод, очищенный от всех комментариев, как я уже упоминал «чистый код C++».

2 — Компиляция

процесс компиляции имеет дело с выходными данными препроцессора на предыдущем шаге.
Предварительно обработанный код транслируется в инструкции сборки, характерные для архитектуры целевого процессора. Они образуют промежуточный язык, понятный человеку.
Как мы знаем, машина может работать только с двоичным языком 0 и 1, поэтому ассемблерный код по-прежнему не может быть прочитан машиной, чтобы понять и справиться с ней,
Поэтому существует Ассемблер, который преобразует ассемблерный код в файлы «.obj» из нулей и единиц .

3 — Линкер

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

Спасибо за чтение :)