Kompileringsproces i c
Hvad er en kompilering?
kompileringen er en proces til konvertering af kildekoden til objektkode. Det gøres ved hjælp af kompilatoren. Kompilatoren kontrollerer kildekoden for de syntaktiske eller strukturelle fejl, og hvis kildekoden er fejlfri, genererer den objektkoden.
C-kompileringsprocessen konverterer kildekoden taget som input til objektkoden eller maskinkoden. Kompileringsprocessen kan opdeles i fire trin, dvs., Forbehandling, kompilering, samling og sammenkædning.
forprocessoren tager kildekoden som input, og den fjerner alle kommentarer fra kildekoden. Præprocessoren tager præprocessordirektivet og fortolker det. For eksempel, hvis < stdio.h >, direktivet er tilgængeligt i programmet, så fortolker præprocessoren direktivet og erstatter dette direktiv med indholdet af ‘stdio.H ‘ fil.
følgende er de faser, gennem hvilke vores program passerer, før de omdannes til en eksekverbar form:
- Preprocessor
- Compiler
- Assembler
- Linker
Preprocessor
kildekoden er den kode, der er skrevet i en teksteditor, og kildekoden er den kode, der er skrevet i en teksteditor, og kildekoden kodefilen får en udvidelse “.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 kompilatoren.
Compiler
koden, der udvides af præprocessoren, overføres til compileren. Kompilatoren konverterer denne kode til samlingskode. Eller vi kan sige, at C-kompilatoren konverterer den forbehandlede kode til samlingskode.
Assembler
samlingskoden konverteres til objektkode ved hjælp af en assembler. Navnet på den objektfil, der genereres af samleren, er det samme som kildefilen. Udvidelsen af objektfilen i DOS er’.obj, ‘og i unik, udvidelsen er ‘o’. Hvis navnet på kildefilen er ‘ Hej.c’, så ville navnet på objektfilen være ‘ hej.obj’.
Linker
hovedsagelig bruger alle programmer skrevet i C biblioteksfunktioner. Disse biblioteksfunktioner er præ-kompileret, og objektkoden for disse biblioteksfiler gemmes med ‘.lib ‘(eller’.a’) udvidelse. Linkerens vigtigste arbejde er at kombinere objektkoden for biblioteksfiler med objektkoden i vores program. Nogle gange opstår situationen, når vores program henviser til de funktioner, der er defineret i andre filer; så spiller linker en meget vigtig rolle i dette. Det forbinder objektkoden for disse filer til vores program. Derfor konkluderer vi, at linkerens opgave er at forbinde objektkoden i vores program med objektkoden for biblioteksfilerne og andre filer. Udgangen 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 ‘.den eksekverbare fil kan 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
nu opretter vi et rutediagram over ovenstående program:
i ovenstående rutediagram 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.i.
- den udvidede kildekode overføres til kompilatoren, og kompilatoren konverterer denne udvidede kildekode til samlingskode. Udvidelsen af forsamlingskoden ville være hej.s.
- denne samlingskode sendes derefter til samleren, som konverterer samlingskoden til objektkode.
- efter oprettelsen af en objektkode opretter linkeren den eksekverbare fil. Læsseren indlæser derefter den eksekverbare fil til udførelsen.