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

Когда вы вызываете gcc в оболочке, он компилирует код .c, на который вы его вызвали, в исполняемый файл. Шаги этого процесса обычно перечислены как предварительная обработка, компиляция, сборка и, наконец, связывание.

В предварительной обработке gcc запускает команду cpp для файла, чтобы расширить макросы и файлы заголовков, результат которых сохраняется во временном файле с суффиксом .i.

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

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

Наконец, компоновщик связывает все ранее проигнорированные вызовы внешних функций с внешними библиотеками и сохраняет их в файл, указанный инициатором, или в файл по умолчанию a.out.