Вы когда-нибудь задумывались, как работает компилятор gcc? Для перевода исходного кода, написанного в машинном коде высокого уровня, в машинный код низкого уровня требуется всего четыре шага. Сегодня я покажу вам четыре этапа компиляции программы на C с помощью gcc!

Начнем с первого этапа: Предварительная обработка.

  • Удаляет комментарии из исходного кода.
  • Макро-расширение.
  • Также расширение файлов заголовков.

Когда вы предварительно обрабатываете исходный файл c, он генерирует файл с расширением .i. Вы можете сделать это с помощью следующей команды: gcc -E file.c (результат перенаправляется на стандартный вывод)

Теперь перейдем к следующему этапу: Компиляция.

  • Здесь на помощь приходит компилятор. Он принимает временный файл со стадии предварительной обработки (с расширением .i).
  • Он переводит файл на язык ассемблера.
  • Он также проверяет синтаксис языка C на наличие ошибок.

Когда вы его скомпилируете, он сгенерирует файл с расширением .s и командной строкой для него: gcc -S file.c

Теперь у нас есть следующий шаг - Ассемблер.

  • Он примет последний код (файл с расширением .s из компиляции) и преобразует его в машинный код низкого уровня.
  • Затем он сгенерирует файл с расширением .o с: gcc -c file.c

И последнее, но не менее важное: компоновщик

  • Он примет файл с расширением .o, созданный ассемблером.
  • Он свяжет функции с их исходным определением, чтобы функция printf () была связана с исходным определением.
  • Затем он сгенерирует исполняемый файл с именем gcc -o executablefile file.c

И вот оно! Это довольно просто, правда? Давай, попробуй! :)