GCC

A HupWiki-ből...

Tartalomjegyzék

Jelentés

GNU Compiler Collection

A jelen

Szabadon elérhető C, C++, Pascal, Objective C, Java, stb. fordító, elsősorban Linux és BSD - tehát POSIX - rendszerekre, de létezik Microsoft Windows-ra készített változata is, rengeteg CPU és architektúra támogatott, amire a GCC tud fordítani.

Történet

Eredetileg GNU C Compiler-ként indult, és ennek a projektnek köszönheti a fejlődését sok nyílt forrású operációs rendszer, többek között a Linux és a nyílt BSD-k is (habár ők szeretnének megszabadulni a GCC-től).

C/C++ fordítása gcc-vel

A források kiterjesztése meghatározza a fordítás nyelvét és módszerét.

.c: C forrás; preprocesszálás, fordítás, összeállítás
.C: C++ forrás; preprocesszálás, fordítás, összeállítás
.cc: C++ forrás; preprocesszálás, fordítás, összeállítás
.cxx: C++ forrás; preprocesszálás, fordítás, összeállítás
.m: Objektív-C forrás; preprocesszálás, fordítás, összeállítás
.i: Elõfeldolgozott C; fordítás, összeállítás
.ii: Elõfeldolgozott C++; fordítás, összeállítás
.s: Assembler forrás; összeállítás
.S: Assembler forrás; preprocesszálás, összeállítás
.h: Preprocesszor file; nem használatos parancssorban

A többi kiterjesztésû file a linkernek megy.

.o: Objektum file (tárgykód)
.a: Archív file

Szinopszis: gcc [kapcsol[ók]] forrás[ok]

Legfontosabb kapcsolok:

-c: Lefordítja és összeállítja a forrást, linkelést nem végez.
-S: Assembly kódot készít.
-E: Csak az elõfeldolgozást végzi el. Az így készült forrás a sztenderd outputra kerül
-g: Debuggolásra használható információ készítése. GDB-vel fel lehet dolgozni.
-O[szint]: Optimalizáció. "szint"=0 nem végez optimalizációt, ez a default. A "szint" maximum 3 lehet. Valamint "szint" lehet "s" is. Ebben az esetben a méretet optimalizálja. Ez az optimalizáció magába foglalja -O2 opciót.
 gcc -O2 proba.c
-Wopcio: "opcio"-nak megfelelõ figyelmeztetéseket fog kiírni.
 gcc -Wall proba.c
-Ikt: A "kt" által definált könyvtárat hozzáadja a header file-ok keresési útvonalához.
 gcc -I. proba.c
-Lkt: A linkeléskor használt programkönyvtárakat tartalmazó könyvtárak listájához hozzáadja a "kt"-t.
-Dnev[=def]: Elõre definiál egy "nev" makrót. Alapértelmezésben értéke 1, ellenkezõ esetben a "def" definíciót kapja.
-Unev: Törli a "nev" makró eddigi definícióját.
-o kimenet: a.out helyett "kimenet" lesz a fordított bináris állomány.
 gcc -o proba proba.c

Fordítás menete

  1. elõfeldolgozás (preprocessing): Az elõfeldolgozó feladata, hogy a kommenteket szóközre cserélje, behelyettesítse a header file-okat illetve makrókat. Ezen kívül ellenörzi az #ifdef illetve #ifndef makróknak megfelelõ feltételeket, és elvégzi a megfelelõ modosításokat, behelyettesítéseket. Ezeken kívül az összes # jellel kezdõdõ sor az elõfordítónak szól. Nem végez szintaxiselemzést. A preprocesszált file kitejesztése .i.
  2. fordítás (compilation): Assembly kódot állít elõ a preprocesszált kódból.
  3. összeállítás (assembly): Az assembly kódból gépi kódot állít elõ. Ennek kiterjesztése .o.
  4. szerkesztés (linking): A künbözõ objektumokat egy komplett programmá szerkeszti, úgy, hogy beépíti a könyvtárakat és a kódot végsõ, futtatható formába.

Kapcsolódó szócikkek

Külső hivatkozások