[ filmil @ 16.12.2004. 21:33 ] @
Kako da prevedem (kompajliram) program u C++-u?

U prethodnih nekoliko dana imali smo više pitanja o prevođenju (nerado koristim: kompajliranju) prvog programa u C++-u.

Ovaj primer je za GNU C++ prevodilac.

Program smeštamo u datoteku hello.cc:
Code:

 #include <iostream>
 
 int main(void) 
 {
     std::cout  << "Hello world"  << std::endl;
     return 0;
 }
 


Prevođenje i pokretanje (kuca se tekst iza znaka $):

Code:
filip@cow:~
 $ g++ -o hello hello.cc
 filip@cow:~
 $ ./hello
 Hello world
 filip@cow:~
 $
 

Značenje:
g++ - ime GNU C++ prevodioca
-o hello - naređuje prevodiocu da datoteku koja se dobije prevođenjem nazove hello. Ako se ne navede opcija -o, dobiće se datoteka koja se tradicionalno zove a.out. C i C++ prevodioci se ovako ponašaju na svim Unix sistemima.
hello.cc - ime datoteke u kojoj se nalazi program. Ekstenzije za C++ programe su obično: .C, .cc, .cpp. Sasvim je svejedno koju ćete izabrati.
./hello - Pokreće program sa imenom hello u tekućem direktorijumu (./). Vrlo je bitno da ne izostavite tačku i kosu crtu.

Ostale poruke koje govore o sličnoj temi, dobijene pretragom foruma 6:
http://www.elitesecurity.org/tema/5268/0#41465
http://www.elitesecurity.org/tema/13853/0#100401
http://www.elitesecurity.org/tema/34154/0#232778
http://www.elitesecurity.org/tema/61457/0#391142
http://www.elitesecurity.org/tema/72386/0#459690

f
[ miličić.marko @ 17.03.2005. 17:41 ] @
--
Kako kompajlirati C++ izvorni kod pod Linuksom?
--

Da bi uspešno kompajlirali vaš C++ izvorni kod pod Linuksom, morate imati alate, kojima bi ste to uradili. Ako koristite bilo koju ozbiljniju distribuciju (Slackware, Debian, SuSE...) šanse su 99% da imate sve što vam je potrebno. Bilo kako bilo, potreban vam je kompajler (najčešće je to gcc/g++ i alatka make).

Ovde će biti reči o tome kako kompajlirati C++ kod u konzoli.

Da bi sve bilo jasnije, pretpostavimo da radite na projektu koji se zove "pitalica" i koji radi sa klasama "osoba" i "pitanje". VEOMA je dobra praksa da svaku klasu čuvate u posebnom fajlu. Poštujući ovo, projekat bi trebao da ima sledeće fajlove:

- main.cpp
- osoba.h
- osoba.cpp
- pitanje.h
- pitanje.cpp

U *.h fajlovima se nalaze deklaracije a u *.cpp fajlovima definicije odgovarajućih klasa.

Sada treba automatizovati proces kompajliranja korišćenjem alatke "make". Postojećim fajlovima, dodajemo fajl:

- makefile

čija je struktura krajnje jednostavna. Naime, "makefile" fajl se sastoji od niza pravila koja definišu zavisnosti izmedu izvornih fajlova. Evo kako se pišu ove zavisnosti:

ime_izvršnog_fajla: spisak_fajlova_korišćenih_fajlova_rastavljeni_razmakom
komada_kojom_se_vrši_kompilacija

*NAPOMENA: drugi red mora početi tabulatorim (tab-om)

Na primer, za naš slučaj "makefile" ima sledeći sadržaj:

main: main.cpp osoba.h osoba.cpp pitanje.h pitanje.cpp
g++ -o main main.cpp pitanje.cpp osoba.cpp