Programmeerimiskeel C/Kompileerimine
Kompileerimine
muudaKompileerimine 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
muudaSelles staadiumis töödeldakse "preprotsessori direktiive". Need sisaldavad #definene, #includede, makrosid ja #pragma kompilaatori sätestusi. Preprotsessori lõpuks saadakse teksti string.
Süntaksi kontrollimine
muudaSee aste kindlustab, et kirjutatud on korrektne kood ja otsustab sellest programmi saamise.
Objektkood
muudaKompilaator 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
muudaLinkimine 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
muudaKeele 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.))
muudaLihtkompileerimine
muuda- Kui oled valmis kirjutanud koodi, salvesta see ".c" faililaiendisse (selleks võid kasutada koodiredaktorit nt: Scite)
- Ava terminal ja liigu kausta, kus fail salvestatud on
- Kompileeri kood käsuga
gcc -o pogramm kood.c
- 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
muudaKui 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++
muudaNB: Bloodshed Dev-C++ kompilaator on saadaval ka eesti keelsena ja on tasuta tarkvara.
- Salvesta kood faililaiendiga ".c", mitte "cpp" mida pakutakse
- Vajuta funktsiooni klahvi "f9" või vali menüüst "Execute" -> "Compile&Run"
Microsoft Visual Studio/Express C++ 2005
muudaTegemist on küll C++ kompilaatoriga, kuid pärast veidikes modifitseerimist saad kasutada ainult Programmeerimiskeelt C. Selleks tuleb:
- Vali uue projekti alustamisel, Win32 console application. Sealt Console application ja Empty project
- Lisage iga cpp-faili algusesse lause #pragma warning(disable : 4996).
- Ülejääd seadistus peaks paigas olema, kuid kui esineb tõrkeid, tuleks kontrollida kas:
- Active solution configuration oleks Debug
- Linker – Debugging – Generate debugging info oleks jah
- C/C++ - General – Debug information format peab olema Program database for edit and continue /ZI
Kompileerimise kohta:
- Kui kood on kirjutatud, salvestad projekt ".cpp" faililaiendiga.
- funktsiooni klahv "f5" käivitab kompileerimise ja käivitab loodud programmi
- funktsiooni klahv "f9" seab peatuspunkte
- funktsiooni klahv "f8"' ga on võimalik projekt sammhaaval läbi käia
- funktsiooni klahv "f1"' ga on võimalik avada manuaal