Все шаги, необходимые для понимания компиляции
4 этапа компиляции gcc
1- Предварительная обработка
2- Компиляция
3- Сборка
4- Связывание
Хорошо! Теперь, когда мы знаем 4 стадии… что они делают?
Предварительная обработка
Это первая фаза, на которой выходные данные сохраняются в «filename.i». На этом этапе с вашим кодом происходит несколько вещей.
Давайте посмотрим, что сейчас находится внутри нашего файла
test.c
.
Давайте посмотрим, как выглядит файл после предварительной обработки с помощью
gcc -E test.c -o
Здесь произошло несколько вещей. Комментарии были удалены, макросы расширены, а включенные файлы расширены.
Компиляция
На этом этапе вывод сохраняется в «filename.s. Это этап сборки и вот так выглядит файл, когда мы запускаем gcc -S test.c
сборка
Результат этого этапа сохраняется в «filename.o». Когда мы запускаем gcc -c test.o
, вот что мы получаем.
Этот код преобразуется в машинный язык.
Связывание
Завершающим этапом процесса компиляции является компоновка. Этот процесс берет все определения и все функции и связывает их вместе. Фактическая терминология для программы, выполняющей этот процесс, называется компоновщиком. Чтобы программа работала от начала до конца, компоновщик добавляет в наш код дополнительный код.