logo

Procés de compilació al c

Què és una recopilació?

La compilació és un procés de conversió del codi font en codi objecte. Es fa amb l'ajuda del compilador. El compilador comprova si hi ha errors sintàctics o estructurals al codi font i, si el codi font no té errors, genera el codi objecte.

Procés de compilació al c

El procés de compilació c converteix el codi font pres com a entrada al codi objecte o codi màquina. El procés de compilació es pot dividir en quatre passos, és a dir, preprocessament, compilació, muntatge i enllaç.

El preprocessador pren el codi font com a entrada i elimina tots els comentaris del codi font. El preprocessador pren la directiva del preprocessador i l'interpreta. Per exemple, si , la directiva està disponible al programa, llavors el preprocessador interpreta la directiva i substitueix aquesta directiva pel contingut de la directiva 'stdio.h' dossier.

iterant una llista en java

Les següents són les fases per les quals passa el nostre programa abans de ser transformat en una forma executable:

    Preprocessador Compilador Muntador Enllaçador
Procés de compilació al c

Preprocessador

El codi font és el codi escrit en un editor de text i el fitxer de codi font té una extensió '.c'. Aquest codi font es passa primer al preprocessador, i després el preprocessador expandeix aquest codi. Després d'ampliar el codi, el codi ampliat es passa al compilador.

Compilador

El codi que s'amplia pel preprocessador es passa al compilador. El compilador converteix aquest codi en codi ensamblador. O podem dir que el compilador C converteix el codi preprocessat en codi assemblador.

Muntador

El codi assemblador es converteix en codi objecte mitjançant un assemblador. El nom del fitxer objecte generat per l'assemblador és el mateix que el fitxer font. L'extensió del fitxer objecte a DOS és '.obj' i a UNIX, l'extensió és 'o'. Si el nom del fitxer font és 'hola.c', aleshores el nom del fitxer objecte seria 'hello.obj'.

Enllaçador

Principalment, tots els programes escrits en C utilitzen funcions de biblioteca. Aquestes funcions de biblioteca estan compilades prèviament i el codi objecte d'aquests fitxers de biblioteca s'emmagatzema amb l'extensió '.lib' (o '.a'). El funcionament principal de l'enllaçador és combinar el codi objecte dels fitxers de la biblioteca amb el codi objecte del nostre programa. De vegades es produeix la situació quan el nostre programa fa referència a les funcions definides en altres fitxers; aleshores, l'enllaçador té un paper molt important en això. Enllaça el codi objecte d'aquests fitxers al nostre programa. Per tant, concloem que la feina de l'enllaçador és enllaçar el codi objecte del nostre programa amb el codi objecte dels fitxers de la biblioteca i altres fitxers. La sortida de l'enllaçador és el fitxer executable. El nom del fitxer executable és el mateix que el fitxer font, però només difereix en les seves extensions. A DOS, l'extensió del fitxer executable és '.exe', i a UNIX, el fitxer executable es pot anomenar 'a.out'. Per exemple, si utilitzem la funció printf() en un programa, l'enllaçador afegeix el seu codi associat en un fitxer de sortida.

Entenem-ho a través d'un exemple.

hola.c

 #include int main() { printf('Hello javaTpoint'); return 0; } 

Ara, crearem un diagrama de flux del programa anterior:

Procés de compilació al c

En el diagrama de flux anterior, es segueixen els passos següents per executar un programa:

  • En primer lloc, el fitxer d'entrada, és a dir, hola.c, es passa al preprocessador i el preprocessador converteix el codi font en codi font ampliat. L'extensió del codi font ampliat seria Hola jo.
  • El codi font ampliat es passa al compilador i el compilador converteix aquest codi font ampliat en codi assemblador. L'extensió del codi de muntatge seria hola.s.
  • Aquest codi assemblador s'envia a l'assemblador, que converteix el codi assemblador en codi objecte.
  • Després de la creació d'un codi objecte, l'enllaçador crea el fitxer executable. Aleshores, el carregador carregarà el fitxer executable per a l'execució.