logo

Postopek kompilacije v c

Kaj je kompilacija?

Prevajanje je postopek pretvorbe izvorne kode v objektno kodo. Izvaja se s pomočjo prevajalnika. Prevajalnik preveri, ali so v izvorni kodi sintaktične ali strukturne napake, in če je izvorna koda brez napak, ustvari objektno kodo.

Postopek kompilacije v c

Postopek prevajanja c pretvori izvorno kodo, vzeto kot vhod, v objektno kodo ali strojno kodo. Postopek prevajanja lahko razdelimo na štiri korake, tj. predprocesiranje, prevajanje, sestavljanje in povezovanje.

Predprocesor vzame izvorno kodo kot vhod in odstrani vse komentarje iz izvorne kode. Predprocesor prevzame direktivo predprocesorja in jo interpretira. Na primer, če , je direktiva na voljo v programu, nato predprocesor interpretira direktivo in nadomesti to direktivo z vsebino 'stdio.h' mapa.

prenesite autocad 2019 english mediafire

Sledijo faze, skozi katere gre naš program, preden se pretvori v izvršljivo obliko:

    Predprocesor Prevajalnik Sestavljalec Povezovalnik
Postopek kompilacije v c

Predprocesor

Izvorna koda je koda, ki je napisana v urejevalniku besedila in ima datoteka izvorne kode pripono '.c'. Ta izvorna koda se najprej posreduje predprocesorju, nato pa predprocesor to kodo razširi. Po razširitvi kode se razširjena koda posreduje prevajalniku.

Prevajalnik

Koda, ki jo razširi predprocesor, se posreduje prevajalniku. Prevajalnik pretvori to kodo v zbirno kodo. Lahko pa rečemo, da prevajalnik C pretvori predhodno obdelano kodo v zbirno kodo.

Sestavljalec

Zbirna koda se pretvori v objektno kodo z uporabo asemblerja. Ime objektne datoteke, ki jo ustvari asembler, je enako izvorni datoteki. Končnica objektne datoteke v DOS-u je '.obj', v UNIX-u pa je končnica 'o'. Če je ime izvorne datoteke 'zdravo.c', potem bi bilo ime objektne datoteke 'hello.obj'.

Povezovalnik

V glavnem vsi programi, napisani v C, uporabljajo knjižnične funkcije. Te knjižnične funkcije so vnaprej prevedene in objektna koda teh knjižničnih datotek je shranjena s pripono '.lib' (ali '.a'). Glavno delovanje povezovalnika je združiti objektno kodo knjižničnih datotek z objektno kodo našega programa. Včasih pride do situacije, ko se naš program sklicuje na funkcije, definirane v drugih datotekah; potem ima linker pri tem zelo pomembno vlogo. Povezuje objektno kodo teh datotek z našim programom. Zato sklepamo, da je naloga povezovalca povezati objektno kodo našega programa z objektno kodo datotek knjižnice in drugih datotek. Izhod povezovalca je izvršljiva datoteka. Ime izvedljive datoteke je enako izvorni datoteki, vendar se razlikuje le v končnicah. V DOS-u je končnica izvedljive datoteke '.exe', v UNIX-u pa se lahko izvršljiva datoteka poimenuje kot 'a.out'. Na primer, če v programu uporabljamo funkcijo printf(), potem povezovalnik doda povezano kodo v izhodno datoteko.

Razumejmo skozi primer.

zdravo.c

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

Zdaj bomo ustvarili diagram poteka zgornjega programa:

Postopek kompilacije v c

V zgornjem diagramu poteka so za izvedbo programa izvedeni naslednji koraki:

  • Prvič, vhodna datoteka, tj. zdravo.c, se posreduje predprocesorju, ta pa pretvori izvorno kodo v razširjeno izvorno kodo. Razširitev razširjene izvorne kode bi bila zdravo.i.
  • Razširjena izvorna koda se posreduje prevajalniku, ki to razširjeno izvorno kodo pretvori v zbirno kodo. Razširitev montažne kode bi bila zdravo.s.
  • Ta zbirna koda se nato pošlje asemblerju, ki pretvori zbirno kodo v objektno kodo.
  • Po izdelavi objektne kode povezovalnik ustvari izvršljivo datoteko. Nalagalnik bo nato naložil izvršljivo datoteko za izvajanje.