Ebben a cikkben elmagyarázom, mi az a C nyelv, és mi történik a fordításhoz vezető egyes lépéseknél.

C programozási nyelv

A C egy általános célú programozási nyelv, amely szintaktikai gazdaságossági ismereteket, áramlásvezérlést, egyszerű struktúrákat és jó operátorkészletet kínál. Ez nem túl magas szintű nyelv, inkább kicsi, egyszerű nyelv, és nem specializálódott semmilyen típusú alkalmazásra. Ez egy erőteljes nyelvvé teszi, korlátlan alkalmazási területtel, és mindenekelőtt gyorsan tanul. Egy programozó rövid időn belül az egész nyelvet használhatja.

A C is lefordított nyelv, nem az értelmezett, vagyis a C nyelven írt forrásfájlokat le kell fordítani, hogy végrehajthatóak legyenek.

Csillagozzuk

Szükségünk van egy Unixhoz hasonló operációs rendszerre, hozzá kell férnünk a «shell-hez is,
ehhez pedig terminált vagy terminálemulátort használunk, ami csak egy ablak, amely lehetővé teszi számunkra A terminálon belül látnunk kell a shell promptot, amely tartalmazza a felhasználónevét és a gépnevét, majd a PS1 környezeti változót, amely gyakran a '$' karakter.
és végül szükségünk van egy szövegszerkesztőre, például a vi-re vagy az emacsra a forrásfájl létrehozásához.

Összeállítás

A fordítás az egyik nyelv kódjának átalakítása egy másik nyelvre, a végrehajtást megelőző lépésben. Általában, amikor a fordításra gondolunk, annak legkézzelfoghatóbb verziójáról beszélünk, amelyik egy futtatható binárist ad kimenetként.

A gcc fordítási folyamat négy különböző lépésből áll:

  • Az előfeldolgozás
  • Az összeállítás
  • Az összeszerelés
  • A linkelés

A vi szerkesztőben létrehozunk egy úgynevezett main.c-t, amely a következőket tartalmazza:

#include <stdio.h>

/**
 * main - Entry point
 *
 * Return: Always 0 (Success)
 */
int main(void)
{
    puts("Hello, World");
    return (0);
}

Ahhoz, hogy a main.c kódunk végrehajtható legyen, be kell írnunk a „gcc main.c” parancsot, és a fordítási folyamat végigmegy mind a négy lépésen, amelyet tartalmaz. Természetesen a gcc rendelkezik olyan opciókkal, amelyek lehetővé teszik, hogy minden egyes lépés után leállítsuk a fordítási folyamatot. Vessünk egy pillantást rájuk.

1. Az előfeldolgozó

Ebben a szakaszban az irányelveket az előfeldolgozó számára értelmezik. Többek között a #define-el inicializált változók értékét minden olyan helyen helyettesítik a kódban, ahol a nevük megjelenik.

Ennek a lépésnek a kimenete egy „.i” kiterjesztésű fájlban lesz tárolva, tehát itt a main.i fájlban lesz.
Ehhez a következő parancsot használjuk:

2. A fordító

Az összeállítás a C kódot gépünk processzorának assembly nyelvére alakítja át. E lépés után leállíthatjuk a gcc parancs „-S” opcióját, és nyomjuk meg az entert.

3. Az összeszerelő

Az assembly az assembly nyelven írt programot objektumkóddá, a processzor által végrehajtható gépi nyelvű bináris fájllá alakítja. Ez egy „.o” végződésű fájlt hoz létre.

E lépés után leállíthatjuk a fordítási folyamatot, ha a „-c” kapcsolót használjuk a gcc paranccsal, és lenyomjuk az enter billentyűt.

4. A linker

A kódunkban szereplő C / C ++ függvények, mint például a printf () a példában, már le vannak fordítva és össze vannak állítva a rendszer meglévő könyvtáraiban. Ezeknek a függvényeknek a bináris kódját valamilyen módon be kell építeni a végrehajtható fájlunkba. Ez a link szakasz, ahol egy vagy több modul az objektumkódban találkozik a könyvtárak meglévő kódjával.

Alapértelmezés szerint a negyedik és egyben utolsó lépés után, vagyis amikor a teljes „gcc main.c” parancsot opciók nélkül beírja, a fordító létrehoz egy a.out nevű végrehajtható programot, amelyet a „./a” beírásával futtathatunk. .out ”a parancssorban.

Dönthetünk úgy is, hogy létrehozunk egy végrehajtható programot a kívánt névvel, ehhez hozzáadjuk a „-o” kapcsolót a gcc parancshoz, a fordítandó fájl vagy fájlok neve után mögé helyezzük, és megnyomjuk a belép:

Mindezt egy lépésben.

Egyetlen forrásfájllal rendelkező programban a fenti folyamat egy lépésben elvégezhető:

$ gcc -o fő fő.c

A main.o fájl nem jön létre; A közbenső objektumkód létrejön és megsemmisül anélkül, hogy az operátor látná, de a végrehajtható program ott megjelenik és működik.