Итак, вы потратили некоторое время на написание сценариев на C и готовы к компиляции. Команда для компиляции — «gcc». Когда вы набираете «gcc main.c», скрипт проходит 4 этапа обработки, прежде чем станет исполняемым.

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

Сначала компилятор читает «#include ‹some_header_file›». Он говорит компилятору найти коды для этого заголовочного файла и сохранить их в новом файле, переименованном в «main.i». На этом этапе, если вы посмотрите на этот файл, вы найдете удобочитаемые коды. Приведенные здесь коды содержат все команды, которые требуются C для выполнения любых задач, которые ваш скрипт в конечном итоге попросит выполнить.

Вы можете просмотреть этот файл, остановив процесс компиляции, остановившись на этапе «Предварительная обработка». Используйте эту команду:

/home/user~$ gcc -E main.c

Сборник

После этапа обработки начинается этап компиляции. Коды преобразуются в нечто, называемое «инструкцией по сборке». Эти инструкции относятся к процессору, который вы программируете для работы. Просто знайте, что компилятор достаточно умен, чтобы понять это, поэтому вам не нужно. Файл теперь сохранен как «main.s». Просто знайте, что расширение .s связано с этапом компиляции. Коды здесь по-прежнему читаются человеком. Для просмотра скажите компилятору остановить обработку на этапе компиляции. Используйте команду:

/home/user~$ gcc -S main.c

сборка

После окончания этапа компиляции начинается этап сборки. Здесь инструкции по ассемблеру преобразуются в машинный код, также называемый объектным кодом. Поэтому, когда вы слышите, как люди говорят о чем-то, называемом «объектный файл», они имеют в виду именно это. Это фактический машинный язык, который ЦП будет читать и выполнять фактические инструкции, написанные вами. Для просмотра скажите компилятору остановить обработку на этапе сборки. Используйте команду:

/home/user~$ gcc -c main.c

Связывание

На данный момент ваши коды почти готовы к выполнению. Тем не менее, все еще есть несколько блоков инструкций, которые отсутствуют или, если они присутствуют, не организованы таким образом, который является обязательным, в правильном порядке. Компилятор выполняет процесс связывания всего вместе. Именно здесь находятся и вставляются коды, приводящие в действие необходимые функции, которые вы написали в своем сценарии. Окончанием этапа компоновки является исполняемый файл. На данный момент коды нечитаемы для любого человека, поэтому нет смысла смотреть на них. Для полной компиляции кодов используйте команду:

/home/user~$ gcc main.c -o главная

  • o — это возможность переименовать окончательный исполняемый файл в «основной».

Надеюсь, это дало вам общее представление о том, как работает компиляция в C.