Hogyan készítsünk C++ programokat Linuxon?
1. Készítsük el a forráskódot C++ nyelven valamilyen szövegszerkesztő segítségével pl.: vi, pico, joe, mcedit.
2. fordítsuk le a forráskódot g++ fordítóval.
3. Futtassuk a programot.
A forráskód elkészítése
A forráskódot szövegszerkesztő segítségével készíthetjük el és szövegfájlokba tárolhatjuk.
A forráskodokat .cpp, a fejlécfájlokat .h kiterjesztéssel nevezzük el.
Egyszerű, könnyen használható szövegszerkesztő az mcedit program.
Egy szövegfájl létrehozása vagy megnyitása:
$ mcedit proba.cpp
A programban funkcióbillentyűket (F1, F2, ...) és menüt is használhatunk.
A funkcióbillentyűk működéséről a képernyő alján megjelenő feliratok is tájékoztatnak.
A menüt az F9-es funkcióbillentyűvel lehet megjeleníteni.
Fordítás g++ fordítóval
A fordítás lépései:
1. Előfeldolgozás: az #include-ok beépítése, makródefiníciók kiértékelése, behelyettesítése
2. Fordítás: a forráskódból tárgykódot (object) kódot készít, ami már gépi kód.
3. Szerkesztés (link): a tárgykódokból végrehajtható állományt hoz létre.
A fordítót a parancssorba kiadott g++ paranccsal tudjuk elindítani.
Ekkor paraméterként kell megadnunk a fordítani kívánt állományokat,
továbbá kapcsolokkal tudjuk befolyásolni a fordító müködését.
Egy egyszerű "Hello World" program fordítása:
$ g++ hello.cpp
Ekkor a fordító egy a.out nevű futtaható állományt készít a hello.cpp forráskódból,
amellyet a következőképpen tudunk futtatni:
$ ./a.out
Ha szeretnénk a elkészülő programunknak más nevet adni, akkor a -o kapcsolóval ezt megtehetjük:
$ g++ -o hello hello.cpp
Ekkor egy hello nevű futtatható állományt hoz létre a fordító.
Ha a forráskódot több fájl tartalmazza, akkor azok mindegyikét soroljuk fel paraméterként a fordítonak.
Pl. tegyük fel, hogy a következő fájlokat készítettük el: proba.cpp, verem.h, verem.cpp, datum.h, datum.cpp.
Ekkor ezeket a következő képpen tudjuk lefordítani:
$ g++ -o proba proba.cpp verem.cpp datum.cpp
A header fájlokat nem kell megadni a fordítónak, mivel azt előfeldolgozás során beépíti
azokba a .cpp fájlokba, ahová include-oltuk.
Lehet külön-külön lefordítani a forrásfájlokat, majd a végén összeszerkeszteni.
A -c kapcsoló hatására a fordító csak a tárgykódot (object fájlt, default .o kiterjesztéssel) készíti el,
majd ezeket lehet összeszerkeszteni:
$ g++ -c proba.cpp
$ g++ -c verem.cpp
$ g++ -c datum.cpp
$ g++ -o proba proba.o verem.o datum.o
A g++ néhány hasznos kapcsolója: | |
-o fáljnév | kimeneti állomány nevének a megadása |
-c | Fordítás szerkesztés nélkül, tárgykódot (object) fájlt készít |
-S | Assembly nyelvű kódot készít a forrás állományból |
-Wall | Figyelmeztetéseket (warning) is megjeleníti a fordítás alatt. |
-O, -On | Optimalizálás bekapcsolása, n-el optimalizálási szinteket is lehet megadni pl.: 1 vagy 2 vagy 3 stb. |
-DPi=3.14 | Makró definíciót lehet adni |
Makefile használata
A make program segítségével automatizálni lehet a fordítás menetét. Egy Makefile-ba írhatjuk le a fordítás mikéntjét, amelyet a make program értelmez és végrehajt. A makefile-ba írhatunk:
Egy példa a makefile-ra:
# Makefile
# A proba nevű futtatható állomány és közbülső object fájlokra vonatkozó szabályok
|
# Makefile
#Változó definíciók
#Szabályok, változók használatával
|
Felhasznált irodalom: