Programmeerimiskeel C/Kompileerimine

Allikas: Vikiõpikud

Kompileerimine[muuda]

Kompileerimine on tõlgendav protsess. Protsess, mis C koodi tõlgib masinkoodi, mis on binaarkeeles ja arusaadav arvutitele. Kuigi protsess on keerulisem, annab see põhimõtte kompileerimisest.

Et kompilaator ei peaks iga kord kogu koodi kompileerima, tõlgitakse see esmalt "objekti failiks" (.o - faililaiend)(standard ja oma kirjutatud #include direktiivid on juba .o faililaiendis ja neid ei pea ümber kompileerima). Kui kõik objektifailid on loodud, kogub "viitur" kõik failid kokku ja loob lõpuks käivitatava faili. See tähendab, et kui muudetakse vaid koodifaili, on vaja see vaid uuesti kompileerida ja rakendus üle viidata.

Ilma detailidesse laskumata jaguneb kompileerimisprotsess:

Preprotsessor[muuda]

Selles staadiumis töödeldakse "preprotsessori direktiive". Need sisaldavad #definene, #includede, makrosid ja #pragma kompilaatori sätestusi. Preprotsessori lõpuks saadakse teksti string.

Süntaksi kontrollimine[muuda]

See aste kindlustab, et kirjutatud on korrektne kood ja otsustab sellest programmi saamise.

Objektkood[muuda]

Kompilaator transleerib lähtekoodi objektkoodiks, mis on samaväärne kirjutatud koodiga ja millest linkimise käigus valmib lõplik programm. Transleerimise käigus toimub lähtekoodi korrektsuse kontroll.

Linkimine[muuda]

Linkimine on protsess, mille käigus linkur moodustab objektkoodi failidest laademooduli faili (kas programmi või dünaamiliselt laaditava teegi (fail laiendiga .dll või .so)). Linkimisel lahendatakse objektkoodis olevad viited teistes objektkoodi failides kirjeldatud funktsioonidele ja muutujatele ning sobitatakse funktsioonide-muutujate aadressid.

Kompileerimis staadiumi peatamis võtmed[muuda]

-E peatab koodi pärast preprotsessorit. Kõik preprotsessori direktiivid on asendatud tavalise koodiga. Saad täispikka koodi.
-S Peatab peale kompileerimist. Saad assambler koodi
-c peatab assembleri faasis, kuid jätab linkimise vahele. Saad objekti koodi

Erinevad kompilaatorid[muuda]

Keele C kompilaatoreid on väga palju. Unix'i tüüpi masinatel kompileeritakse tavaliselt terminalis ja MS Windows'il arenduskeskkonnas (IDEs).

GCC (Unix, Linux, Solaris (jne.))[muuda]

Lihtkompileerimine[muuda]

  1. Kui oled valmis kirjutanud koodi, salvesta see ".c" faililaiendisse (selleks võid kasutada koodiredaktorit nt: Scite)
  2. Ava terminal ja liigu kausta, kus fail salvestatud on
  3. Kompileeri kood käsuga
    gcc -o pogramm kood.c
  4. Kui programmi kompileerimisel ei esinenud vigasid, saad antud programmi käivitada käsuga
    ./programm

Lisaks:

cd .. - viib 1 kataloogi võrra juurkaustale lähemale
cd Desktop - sisene kataloogi Desktop
ls - kuva elemendid antud kataloogis

Mitme faili kompileerimine üheks käitatavaks failiks[muuda]

  • Sama, mis oleks lihtsa kompileerimise puhul, vahega et kompileerides lisad teise kodifaili ka
    gcc -o pogramm kood_1.c kood_2.c

2 võimalus:

  • Kompileeri lähtekoodi failid objektifailideks
    gcc -c -o kood_1.o kood_1.c
    gcc -c -o kood_2.o kood_2.c
  • Lingi objektifailidest käivitatav fail
    gcc -o pogramm kood_1.o kood_2.o

Abi/Manuaali otsimine[muuda]

Kui sa tahad otsida manuaalist kuidas mingi funktsioon töötab, või mis lisa lipukesi läheb antud teegil kompileeridas vaja, on süsteemi juba alamsüsteemina sisse ehitatud manuaalid. Kui sa tahad otsid kindlat teemat, kirjuta terminali vastavalt:

  • Üldkuju:
    man teema
  • Näide:
    man printf

Otsida võid ka teemasid mis sisaldavad teatud sõna:

  • Üldkuju:
    man -k teemas_sisalduv_sõna
  • Näide:
    man -k math.h

Bloodshed Dev-C++[muuda]

NB: Bloodshed Dev-C++ kompilaator on saadaval ka eesti keelsena ja on tasuta tarkvara.

  1. Salvesta kood faililaiendiga ".c", mitte "cpp" mida pakutakse
  2. Vajuta funktsiooni klahvi "f9" või vali menüüst "Execute" -> "Compile&Run"

Microsoft Visual Studio/Express C++ 2005[muuda]

Tegemist on küll C++ kompilaatoriga, kuid pärast veidikes modifitseerimist saad kasutada ainult Programmeerimiskeelt C. Selleks tuleb:

  1. Vali uue projekti alustamisel, Win32 console application. Sealt Console application ja Empty project
  2. Lisage iga cpp-faili algusesse lause #pragma warning(disable : 4996).
  3. Ülejääd seadistus peaks paigas olema, kuid kui esineb tõrkeid, tuleks kontrollida kas:
    1. Active solution configuration oleks Debug
    2. Linker – Debugging – Generate debugging info oleks jah
    3. C/C++ - General – Debug information format peab olema Program database for edit and continue /ZI

Kompileerimise kohta:

  1. Kui kood on kirjutatud, salvestad projekt ".cpp" faililaiendiga.
  2. funktsiooni klahv "f5" käivitab kompileerimise ja käivitab loodud programmi
  3. funktsiooni klahv "f9" seab peatuspunkte
  4. funktsiooni klahv "f8"' ga on võimalik projekt sammhaaval läbi käia
  5. funktsiooni klahv "f1"' ga on võimalik avada manuaal

Ülessanded[muuda]