proces kompilace v c

co je kompilace?

kompilace je proces převodu zdrojového kódu na objektový kód. To se provádí pomocí kompilátoru. Kompilátor kontroluje zdrojový kód pro syntaktické nebo strukturální chyby, a pokud je zdrojový kód bezchybný, vygeneruje objektový kód.

proces kompilace v c

proces kompilace C převádí zdrojový kód přijatý jako vstup do kódu objektu nebo strojového kódu. Proces kompilace lze rozdělit do čtyř kroků, tj., Předzpracování, sestavování, sestavování a propojení.

preprocesor vezme zdrojový kód jako vstup a odstraní všechny komentáře ze zdrojového kódu. Preprocesor přebírá direktivu preprocesoru a interpretuje ji. Například pokud <stdio.h>, směrnice je k dispozici v programu, pak preprocesor interpretuje směrnici a nahradit tuto směrnici s obsahem ‘stdio.soubor h.

níže jsou uvedeny fáze, kterými náš program prochází před transformací do spustitelné formy:

  • Preprocessor
  • Kompilátor
  • Assembler
  • Linker

Kompilace v c

Preprocessor

zdrojový kód je kód, který je napsán v textovém editoru a zdrojový kód souboru je dána přípona “.d”. Tento zdrojový kód je nejprve předán preprocesoru a poté preprocesor tento kód rozšíří. Po rozšíření kódu je rozšířený kód předán kompilátoru.

kompilátor

kód, který je rozšířen preprocesorem, je předán kompilátoru. Kompilátor převede tento kód na kód sestavy. Nebo můžeme říci, že kompilátor C převádí předem zpracovaný kód na kód sestavy.

Assembler

kód sestavy se převede na objektový kód pomocí assembleru. Název souboru objektu generovaného assemblerem je stejný jako zdrojový soubor. Přípona souboru objektu v DOSu je ‘.obj,’ a v Unixu je přípona ‘o’. Pokud je název zdrojového souboru ‘ Dobrý den.c’, pak by název souboru objektu byl ” dobrý den.obj’.

Linker

hlavně všechny programy napsané v C používají funkce knihovny. Tyto funkce knihovny jsou předkompilovány a objektový kód těchto souborů knihovny je uložen pomocí ‘.lib “(nebo”.a”) rozšíření. Hlavním úkolem linkeru je kombinovat objektový kód knihovních souborů s objektovým kódem našeho programu. Někdy nastane situace, kdy náš program odkazuje na funkce definované v jiných souborech; pak linker hraje v tom velmi důležitou roli. Spojuje objektový kód těchto souborů s naším programem. Proto jsme dospěli k závěru, že úkolem linkeru je propojit objektový kód našeho programu s objektovým kódem souborů knihovny a dalších souborů. Výstupem linkeru je spustitelný soubor. Název spustitelného souboru je stejný jako zdrojový soubor, ale liší se pouze v jejich rozšíření. V DOSu je přípona spustitelného souboru ‘.exe’ a v Unixu lze spustitelný soubor pojmenovat jako ‘A. out’. Pokud například v programu používáme funkci printf (), pak linker přidá přidružený kód do výstupního souboru.

pojďme pochopit na příkladu.

Dobrý den.c

Teď, jsme se vytvořit vývojový diagram pro výše uvedený program:

Kompilace v c

Ve výše uvedené schéma, následující kroky jsou potřebné k provedení programu:

  • za Prvé, vstupní soubor, tzn., dobrý den.C, je předán preprocesoru a preprocesor převede zdrojový kód na rozšířený zdrojový kód. Rozšíření rozšířeného zdrojového kódu by bylo hello.i.
  • rozšířený zdrojový kód je předán kompilátoru a kompilátor převádí tento rozšířený zdrojový kód na kód sestavy. Rozšíření montážního kódu by bylo Ahoj.s.
  • tento montážní kód je poté odeslán assembleru, který převede montážní kód na objektový kód.
  • po vytvoření objektového kódu vytvoří linker spustitelný soubor. Zavaděč pak načte spustitelný soubor pro provedení.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.