Компиляция и сборка программ на C++ [в разработке]

При написании программ на С++ критически важно понимать, как из исходного кода генерируется готовая программа.

C++ - это компилируемый язык, что значит, что программы на C++ компилируются в готовый исполняемый файл. Но на самом деле, в процессе генерации исполняемого файла учавствует не только один компилятор.

Давайте рассмотрим процесс обработки исходного кода на С++ подробнее.

Общая схема

flowchart TD
    A("Исходная программа") --> B["Препроцессор"]
    B -->|Модифицированная исходная программа| C["Компилятор"]
    C -->|Целевая ассемблерная программа| D["Ассемблер"]
    D -->|Перемещаемый машинный код| E["Компоновщик/загрузчик"]
    G("Библиотечные файлы") --> E
    H("Перемещаемые объектные файлы") --> E
    E --> F["Целевой машинный код"]

    classDef file fill:grey;

    class A file
    class G file
    class H file

На этой схеме есть много новых понятий - препроцессор, компоновщик, ассемблер. Рассмотрим каждое из них подробнее.