Вы когда-нибудь задумывались, как работает компилятор 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
И вот оно! Это довольно просто, правда? Давай, попробуй! :)