Muitas vezes na compilação de um código fonte pensamos que existe somente um processo de uma única etapa, mas na verdade o processo se dividem em quatro estágios realizados por componentes diferentes:
A figura abaixo exemplifica as etapas do processo de compilação e os arquivos “auxiliares” que são gerados apos a execução de cada estagio. A seguir cada processo será explicado.

Pré-processamento:
No estagio de pré-processamento as diretrizes #define, #if, #include e etc são resolvidas.
Compilação:
Neste estagio o compilador executa a “tradução” ou a compilação propriamente dita dos códigos fontes em linguagem de montagem que serão utilizados na próxima etapa do processo.
Montagem:
Ao final o estagio de montagem um arquivo objeto .o é gerado com o montador paradão normalmente o as.
Ligação:
No estagio final o ligador faz a junção entre todos os códigos objetos .o, colocando os códigos objetos no seus locais adequados no executável. O ligador padrão na maiorias dos sistemas é o ld.
No próximo post pretendo exemplificar cada etapa do processo de compilação utilizando o GNU GCC, uma ferramente essencial na vida de todos nos, mesmo que indiretamente.