Kompileringsprosess i c
Hva er en kompilering?
kompileringen er en prosess for å konvertere kildekoden til objektkode. Det er gjort ved hjelp av kompilatoren. Kompilatoren sjekker kildekoden for de syntaktiske eller strukturelle feilene, og hvis kildekoden er feilfri, genererer den objektkoden.
c-kompileringsprosessen konverterer kildekoden tatt som inngang til objektkoden eller maskinkoden. Kompileringsprosessen kan deles inn i fire trinn, dvs., Forbehandling, Kompilering, Montering og Kobling.
preprosessoren tar kildekoden som en inngang, og den fjerner alle kommentarene fra kildekoden. Preprocessor tar preprocessor direktivet og tolker det. For eksempel, hvis < stdio.h>, direktivet er tilgjengelig i programmet, så preprosessoren tolker direktivet og erstatte dette direktivet med innholdet i ‘ stdio.h ‘ fil.
følgende er fasene gjennom hvilke vårt program passerer før de blir forvandlet til en kjørbar form:
- Preprosessor
- Kompilator
- Assembler
- Linker
Preprosessor
kildekoden er koden som er skrevet i en tekstredigerer og kilden kodefilen er gitt en utvidelse “.c”. Denne kildekoden sendes først til preprosessoren, og deretter utvider preprosessoren denne koden. Etter å ha utvidet koden, sendes den utvidede koden til kompilatoren.
Kompilator
koden som utvides av forprosessoren, sendes til kompilatoren. Kompilatoren konverterer denne koden til samlingskode. Eller vi kan si At c-kompilatoren konverterer den forhåndsbehandlede koden til samlingskode.
Assembler
samlingskoden konverteres til objektkode ved hjelp av en assembler. Navnet på objektfilen generert av assembler er det samme som kildefilen. Utvidelsen av objektfilen I DOS er ‘.obj,’ og i UNIX er utvidelsen ‘o’. Hvis navnet på kildefilen er ‘ hei.c’, så navnet på objektfilen ville være ‘ hei.obj’.
Linker
Hovedsakelig bruker alle programmene som er skrevet I C biblioteksfunksjoner. Disse bibliotekfunksjonene er forhåndskompilert, og objektkoden til disse bibliotekfilene lagres med ‘.lib’ (eller ‘.a’) forlengelse. Hovedarbeidet til linker er å kombinere objektkoden til bibliotekfiler med objektkoden til vårt program. Noen ganger oppstår situasjonen når vårt program refererer til funksjonene som er definert i andre filer; da linker spiller en svært viktig rolle i dette. Det knytter objektkoden til disse filene til vårt program. Derfor konkluderer vi med at lenkerens jobb er å knytte objektkoden til vårt program med objektkoden til bibliotekets filer og andre filer. Utgangen av linker er den kjørbare filen. Navnet på den kjørbare filen er det samme som kildefilen, men skiller seg bare i sine utvidelser. I DOS er utvidelsen av den kjørbare filen ‘.exe’, OG I UNIX, kan den kjørbare filen bli navngitt som ‘a. out’. For eksempel, hvis vi bruker printf () – funksjonen i et program, legger linkeren sin tilknyttede kode i en utdatafil.
la oss forstå gjennom et eksempel.
hei.c
nå skal vi lage et flytskjema for programmet ovenfor:
i ovennevnte flytskjema blir følgende trinn tatt for å utføre et program:
- for det første, inngangsfilen, dvs.hei.c, sendes til preprosessoren, og preprosessoren konverterer kildekoden til utvidet kildekode. Utvidelsen av den utvidede kildekoden ville være hei.i.
- den utvidede kildekoden sendes til kompilatoren, og kompilatoren konverterer denne utvidede kildekoden til samlingskode. Utvidelsen av forsamlingskoden ville være hei.s.
- denne samlingskoden sendes deretter til assembleren, som konverterer samlingskoden til objektkode.
- etter opprettelsen av en objektkode, oppretter linkeren den kjørbare filen. Lasteren vil da laste den kjørbare filen for utførelsen.