logo

Kompileringsproces i c

Hvad er en kompilering?

Kompileringen er en proces med at konvertere kildekoden til objektkode. Det gøres ved hjælp af compileren. Compileren kontrollerer kildekoden for de syntaktiske eller strukturelle fejl, og hvis kildekoden er fejlfri, genererer den objektkoden.

Kompileringsproces i c

c kompileringsprocessen konverterer kildekoden taget som input til objektkoden eller maskinkoden. Kompileringsprocessen kan opdeles i fire trin, dvs. Pre-processing, Compiling, Assembling og Linking.

Forprocessoren tager kildekoden som input, og den fjerner alle kommentarer fra kildekoden. Præprocessoren tager præprocessordirektivet og fortolker det. For eksempel hvis , direktivet er tilgængeligt i programmet, så fortolker præprocessoren direktivet og erstatter dette direktiv med indholdet af 'stdio.h' fil.

windows.åbn javascript

Følgende er de faser, som vores program gennemgår, før det omdannes til en eksekverbar form:

    Forprocessor Kompiler Monter Linker
Kompileringsproces i c

Forprocessor

Kildekoden er den kode, som er skrevet i en teksteditor, og kildekodefilen får filtypen '.c'. Denne kildekode sendes først til præprocessoren, og derefter udvider præprocessoren denne kode. Efter udvidelse af koden sendes den udvidede kode til compileren.

Kompiler

Koden, som udvides af præprocessoren, sendes til compileren. Compileren konverterer denne kode til assembly-kode. Eller vi kan sige, at C-kompileren konverterer den forbehandlede kode til assembly-kode.

Monter

Monteringskoden konverteres til objektkode ved at bruge en assembler. Navnet på objektfilen genereret af assembleren er det samme som kildefilen. Objektfilens udvidelse i DOS er '.obj', og i UNIX er udvidelsen 'o'. Hvis navnet på kildefilen er 'hello.c', så ville navnet på objektfilen være 'hello.obj'.

Linker

Hovedsageligt bruger alle programmer skrevet i C biblioteksfunktioner. Disse biblioteksfunktioner er præ-kompileret, og objektkoden for disse biblioteksfiler er gemt med '.lib' (eller '.a') filtypenavnet. Linkerens hovedfunktion er at kombinere objektkoden for biblioteksfiler med objektkoden for vores program. Nogle gange opstår situationen, når vores program refererer til de funktioner, der er defineret i andre filer; så spiller linker en meget vigtig rolle i dette. Den forbinder objektkoden for disse filer til vores program. Derfor konkluderer vi, at linkerens opgave er at forbinde objektkoden for vores program med objektkoden for biblioteksfilerne og andre filer. Outputtet af linkeren er den eksekverbare fil. Navnet på den eksekverbare fil er det samme som kildefilen, men adskiller sig kun i deres udvidelser. I DOS er udvidelsen af ​​den eksekverbare fil '.exe', og i UNIX kan den eksekverbare fil navngives som 'a.out'. For eksempel, hvis vi bruger printf()-funktionen i et program, tilføjer linkeren sin tilknyttede kode i en outputfil.

Lad os forstå gennem et eksempel.

hej.c

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

Nu vil vi oprette et flowdiagram af ovenstående program:

Kompileringsproces i c

I ovenstående flowdiagram tages følgende trin for at udføre et program:

  • For det første inputfilen, dvs. hej.c, overføres til præprocessoren, og præprocessoren konverterer kildekoden til udvidet kildekode. Udvidelsen af ​​den udvidede kildekode ville være Hej jeg.
  • Den udvidede kildekode sendes til compileren, og compileren konverterer denne udvidede kildekode til assemblerkode. Udvidelsen af ​​samlingskoden ville være hej.s.
  • Denne assemblerkode sendes derefter til assembleren, som konverterer assemblerkoden til objektkode.
  • Efter oprettelsen af ​​en objektkode opretter linkeren den eksekverbare fil. Indlæseren vil derefter indlæse den eksekverbare fil til udførelsen.