Привет мир!

Давайте немного поговорим о gcc и компиляторах. В частности, что происходит за кулисами, когда вы набираете gcc main.c. Но сначала давайте объясним, что такое gcc.

gcc

gcc расшифровывается как GNU Compiler Collection и представляет собой компилятор, который программисты используют для компиляции файла, содержащего код, в исполняемую программу. Например, в заголовке нашего блога у нас есть пример команды для компиляции файла main.c в исполняемый файл, который можно запустить на компьютере. Давайте посмотрим на это.

Компиляция

Основной формат для компиляции с использованием gcc:

параметры компилятора input_file_name

Таким образом, для нашего кода выше (gcc main.c) компилятором будет gcc, к нему не добавлено никаких опций (опции — это способ изменить поведение gcc), а читаемый input_file — это main.c. Затем компилятор выдает исполняемый вызов a.out. Простой не так ли? Но давайте разобьем его еще дальше.

Когда вы компилируете файл в исполняемый файл, он проходит 4 основных этапа:

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

На первом этапе компилятор убирает исходный код (удаляет комментарии, включает фильтры заголовков, расширяет макросы) и создает промежуточный файл, который затем компилируется.

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

Компиляция используется для преобразования предварительно обработанного файла в ассемблерный код. Но, поскольку наши компьютеры могут выполнять код только в двоичном виде (01010101 и т. д.), ассемблерный код затем передается на следующий этап сборки.

3. Сборка

Сборка берет этот ассемблерный код и превращает его в двоичный (также известный как объектный) код.

4. Связывание

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

Я надеюсь, что это поможет вам лучше понять, как работает компилятор для C и что происходит за кулисами, когда вы запускаете команду gcc.