GCC
A HupWiki-ből...
Tartalomjegyzék |
Jelentés
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
- 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.
- fordítás (compilation): Assembly kódot állít elõ a preprocesszált kódból.
- összeállítás (assembly): Az assembly kódból gépi kódot állít elõ. Ennek kiterjesztése .o.
- 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
- Hivatalos honlap
- TCC : Tiny C Compiler (rendkívül kis méretű és gyors alternatíva)