Привет мир!
Давайте немного поговорим о 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.