Что происходит, когда вы вводите «gcc main.c» в командной строке?

Чтобы понять, что происходит за кулисами, когда мы вводим «gcc main.c» в командную строку, давайте сначала разобьем ее на две части: gcc и main.c. GCC, что означает GNU Compiler Collection, представляет собой компилятор C и C++. Цель компилятора — преобразовать удобочитаемый код нашей программы на C в машинный код, который компьютер сможет выполнить. Как императивный язык программирования, C должен быть скомпилирован, чтобы его можно было выполнить. Вот тут-то и появляется наша коллекция компиляторов GNU, или gcc. Чтобы вызвать компилятор для вашего файла исходного кода C, вам нужно сначала ввести gcc в командной строке, а затем имя файла, который вы хотите скомпилировать.

Вторая часть рассматриваемого утверждения — «main.c». При написании программ на C важно сначала назвать файл с расширением «.c». В данном случае файл был назван main.c. Открыв его, мы ожидаем найти программу на языке C, ожидающую компиляции. Если мы затем откроем нашу командную строку и введем gcc main.c, мы прикажем нашему компьютеру начать процесс компиляции.

Компиляция состоит из четырех шагов:

Предварительная обработка

Подборка

Сборка

Связывание

Предварительная обработка

Препроцессор — это системное программное обеспечение, которое использует исходный код в качестве входных данных и имеет по отношению к нему три функции:

  1. Удаление комментариев
  2. Включение файла
  3. Расширение макроса

Сборник

Компиляция — это второй этап процесса, при котором выходные данные препроцессора используются в качестве входных данных, и генерируется исходный код на ассемблере.

сборка

Третий этап компиляции — сборка. Во время этого процесса выходные данные компиляции, которые называются исходным кодом ассемблера, создают листинг ассемблера со смещениями, а затем выходные данные сохраняются в объектном файле.

Связывание

Четвертый и последний этап компиляции — компоновка. Он принимает файлы или библиотеки в качестве входных данных и создает один исполняемый файл.

Возвращаясь к нашему вопросу, когда мы запускаем «gcc main.c» через командную строку, наш файл с именем main.c проходит через 4 этапа компиляции, и на выходе будет один исполняемый файл в машинном коде, готовый для ваш компьютер для интерпретации.

В терминале вы снова увидите командную строку, и чтобы проверить процесс компиляции, вы можете использовать команду less для просмотра содержимого вашего нового исполняемого файла. Чтобы перейти к следующему шагу, было бы благоразумно предоставить вашему компилятору место для размещения вашего нового машинного кода. Мы можем просто сделать это, введя параметр -o в команду gcc, чтобы заменить наш main.c на main.o, а затем мы можем использовать ярлык, чтобы запустить его одновременно с двумя амперсандами и именем скомпилированного файла, подобным этому :

gcc main.c -o главная && ./главная

Создайте свой собственный файл C, попробуйте. Скопируйте и вставьте следующий код в новый файл main.c:

#include ‹stdio.h›

интервал основной (пустой)

{

printf("Привет, мир\n");

возврат (0);

}

Попробуйте прямо сейчас в своей командной строке и посмотрите, что произойдет.