Sigle GCC относится к коллекции компиляторов GNU. Коллекция компиляторов GNU (GCC) — это система компиляторов, созданная проектом GNU, которая поддерживает различные языки программирования. GCC является важным компонентом цепочки инструментов GNU и компилятором по умолчанию для большинства проектов, связанных с GNU и Linux, включая ядро ​​Linux.

Система GNU была разработана как 100% свободное программное обеспечение, свободное в том смысле, что оно уважает свободу пользователя.

Так работает компилятор

Когда вы вызываете GCC, вы обычно выполняете предварительную обработку, компиляцию, сборку и компоновку. Можно использовать общие опции, чтобы остановить этот процесс на промежуточной стадии.

Его синтаксис следующий:

gcc [-c|-S|-E] [-std=standard]

Опции.
- c
выполняет предобработку и компиляцию, получая файл в объектном коде; не связывает.
- E
выполняет только предварительную обработку, отправляя результат на стандартный вывод.
-o файл
указывает имя выходного файла независимо от завершенных этапов.
- Iroute
указывает путь в каталог, в который помеченные файлы должны быть включены в исходную программу. Между буквой I и путем нет пробела, пример: -I /usr/include
-L
указывает путь к каталогу, в котором находятся файлы библиотеки с объектом код функций, на которые есть ссылки в исходной программе. Между буквой L и путем нет пробела, например: -L / usr / lib
-Wall
он показывает все предупреждения компилятора и сообщения об ошибках, даже некоторые сомнительные, но в конечном итоге этого легко избежать, тщательно написав код.
-g
включает в сгенерированный исполняемый файл необходимую информацию для возможности отслеживания ошибок с помощью отладчика, такого как GDB ( Отладчик GNU).
-v
отображает команды, выполняемые на каждом этапе компиляции, и версию компилятора. Дайте очень подробный отчет.

Этапы компиляции

Процесс компиляции состоит из четырех последовательных этапов: предварительная обработка, компиляция, сборка и компоновка. Чтобы перейти от написанной человеком исходной программы к исполняемому файлу, необходимо последовательно выполнить эти четыре этапа. Команды gcc и g++ могут выполнять весь процесс сразу.

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

Первое, что делает компилятор, — это предварительно обрабатывает исходный файл, то есть интерпретирует все директивы предварительной обработки, которые мы использовали, такие как #define, #include, #ifdef и т. д., а также удаляет все комментарии, которые мы написали в файле.

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

Компиляция преобразует код C в язык ассемблера процессора нашей машины. Результатом компиляции является НЕисполняемый двоичный код, называемый объектным кодом, и его характерным расширением является файл «.o».

3. Собрано

Сборка преобразует программу на языке ассемблера в объектный код, двоичный файл на машинном языке, исполняемый процессором. Создает файл в объектном коде main.o из файла языка ассемблера main.s. Не очень распространено делать только сборку; обычно выполняется все предыдущие шаги до генерации объектного кода следующим образом:

4. Связано

Функции C, включенные в наш код, уже скомпилированы и собраны в существующих библиотеках системы. Нужно как-то внедрить бинарный код этих функций в наш исполняемый файл. Это этап компоновки, здесь один или несколько модулей в объектном коде встречаются с существующим кодом в библиотеках.

Не будем забывать, что весь вышеперечисленный процесс можно выполнить за один шаг:…

gcc -o main main.c

Надеюсь, это поможет вам.