Что происходит, когда вы вводите gcc main.c

Чтобы лучше понять, что делает gcc, важно объяснить, как работает компьютер. Компьютеры не говорят на том же языке, что и мы, люди, у них есть свой собственный язык, который представляет собой код, который мы вводим в компьютер, затем эти коды должны быть преобразованы в двоичный язык, который понимают компьютеры. Эта информация позже преобразуется в удобочитаемую информацию или, другими словами, в исполняемый файл.

Диаграмма выше более подробно объясняет, как происходит трансформация этого языка на каждом этапе.

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

После того, как мы создали файл (.c), он пройдет через процесс компиляции, другими словами, сделает наш код читаемым или понятным машине, преобразовав его в двоичный код, двоичный код которого представляет собой нули и единицы.

Именно здесь в дело вступает компилятор. Мы запускаем наш файл (тот, который был создан ранее) main.c и запускаем его с помощью gcc, набрав сначала компилятор, а затем gcc в оболочке.

Что именно здесь произошло?

GCC запускает код, выполняя шаги, показанные на первом рисунке.

Сначала он прошел через препроцессор, который подготавливает файл, удаляя комментарии и включая коды из заголовочных и исходных файлов.

Затем он проходит компилятор,здесьсобирается весь код и информация, отсортированные препроцессором.

В процессе Assembly код, сгенерированный компилятором, преобразуется в двоичный код, чтобы машина могла его интерпретировать.

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