c

[Compiladores] – Como funciona o processo de compilação de um código-fonte usando GCC

Quando o GCC é invocado, ele normalmente realiza quatro etapas para gerar o executável: Pré-Processamento, Compilação, Montagem e Linkagem (Ligação), sempre nesta ordem e sendo que é possível parar o processo no final de cada etapa.

1 – Pré-Processamento

Esta etapa é responsável pela resolução de diretrizes do pré-processador, como #define, #if, #include

fredericom@novagenesis:~$ gcc -E teste.c -o teste.i

* Este comando redireciona a saída do pré processador para o arquivo teste.i

2 – Compilação

Nesta fase é produzida a linguagem de montagem dos arquivos de entrada.

fredericom@novagenesis:~$ gcc -S teste.c

*O arquivo teste.s será gerado, já em linguagem assembly da arquitetura.

3 – Montagem

Produz o arquivo objeto .o, levando em conta a linguagem de montagem dos arquivos de entrada.

fredericom@novagenesis:~$ gcc -c teste.c

*Gera o arquivo objeto teste.o

4 – Linkagem

Nesta fase os arquivos .o e as bibliotecas são “colocados” no executável.

fredericom@novagenesis:~$ gcc -o teste teste.c

* Gera o arquivo executável teste

No entanto, a maioria dos programas consistem em vários arquivos de código-fonte. Caso hajam dois arquivos, arquivo1.c e arquivo2.c, a seguinte linha de comando poderia ser utilizada para compilar o programa final:

fredericom@novagenesis:~$ gcc -o teste arquivo1.c arquivo2.c

O GCC interpreta os arquivos de acordo com a sua extensão. Algumas das principais podem ser vistas na tabela abaixo:

Extensão

Interpretação

.c

Programa e linguagem C

.C .cc

Programa em linguagem C++

.i

Programa em C pré-processado

.ii

Programa em C++ pré-processado

.S .s

Programa em linguagem Assembly

.o

Programa objeto

.a .so

Bibliotecas compiladas