Tvorba programů v prostředí OS GNU/Linux 2

Z GeoWikiCZ
Vytvoření aplikace, pro naprosté začátečníky

Kapitola obsahuje základní informace nutné pro vytvoření, kompilaci a spuštění jednoduchého C++ programu pod OS GNU/Linux. Použité nástroje:

  • kompilátor GNU g++
  • a textový editor GNU Emacs.

Přihlášení se k účtu na lokálním počítači

Pokud fyzicky sedíme u osobního počítače s OS GNU/Linux, musíme se nejprve přihlásit k účtu na tomto (lokálním) počítači. Po startu operačního systému GNU/Linux jsme vyzváni k zadání uživatelského jména a příslušného hesla. V případě úspěšného nalogování do systému mohou nastat dvě varianty, záleží na nastavení systému:

  • nacházíme se stále v "textovém režimu"
Přihlášení do systému v textovém režimu
Přihlášení do systému v grafickém režimu

Neb při programování obvykle budeme používat několik souběžně otevřených oken (jedno pro editaci, kompilaci, ...), je výhodné pracovat v "grafickém režimu". Jestliže se po nalogování nacházíme v "textovém režimu", pro přechod do "grafického režimu" použijeme příkaz startx.

$ startx

Vytvoření pracovního adresáře

Otevřeme si okno terminálu (voláme program xterm), terminál zpravidla lze otevřít z menu, které daný window manager nabízí. V tomto terminálovém okně budeme pracovat - vytvářet nové adresáře, spouštět kompilátor, atd.

XTerm

Před tvorbou nového C++ projektu/programu bychom měli vytvořit nový adresář, ve kterém bude nový projekt uložen (pro účely studia vytvářejte pro každé cvičení jeden adresář, např. cviceni1, cviceni2, ...). Adresář vytvoříme příkazem mkdir s parametrem jméno adresáře. Upozornění: běžný uživatel zpravidla může vytvářet nové adresáře a soubory pouze ve svém domovském adresáři $HOME.

$ mkdir ahoj

Pro další práci se musíme do nově vytvořeného adresáře přesunout. Přechody mezi adresáři jsou realizovány příkazem cd, dále budeme používat příkaz pwd - příkaz vypisující název aktuálního (pracovního) adresáře.

Přesun mezi adresáři

Vytvoření zdrojového C++ souboru

Po změně aktuálního adresáře (zde adresář /home/honza/ahoj) je již možno vytvořit soubor obsahující zdrojový kód C++ programu, soubor nazveme pozdrav.cpp. Soubor vytvoříme spuštěním programu emacs s parametrem program.cpp

$ emacs pozdrav.cpp &

Tímto způsobem spustíme v novém okně program GNU Emacs s otevřeným souborem program.cpp. Situace vypadá následovně

Načítání komponent GNU Emacs

V aktuálním bufferu GNU Emacsu editujeme soubor program.cpp, po editaci program uložíme klávesovou zkratkou C-x C-s

Otevření souboru program.cpp v GNU Emacs

Nyní máme možnost ukončit program GNU Emacs pomocí klávesové zkratky C-x C-c. V této chvíli je však výhodnější program GNU Emacs s otevřeným souborem pozdrav.cpp nezavírat, viz dále.

Kompilace, vytvoření spustitelného souboru

Zde se (konečně) dostáváme k překladu našeho programu. Musíme se přepnout do okna terminálu a spustit kompilátor g++. Základní syntaxe je g++ nazev_souboru.cpp

$ g++ pozdrav.cpp

Pokud kompilátor během kompilace programu "neoznámí" na výstupu chyby, vytvoří spustitelný soubor a.out. Tento soubor již můžeme spustit (upozorňuji na nutnost uvedení ./ před názvem spustitelného souboru)

Spuštění programu v příkazové konzoli

Gratuluji, právě jste vytvořili vaší první C++ aplikaci. Obrazovka v tomto stádiu může vypadat následovně

Spuštění programu v okně XTermu

Kompilace, vytvoření spustitelného souboru a opravy chyb

Na konci bodu číslo 3 bylo doporučeno neuzavírat před kompilací program GNU Emacs. Důvod je prozaický, při programování se dělají (nejen) syntaktické chyby, žádný i sebevíce zkušený programátor se chybám nevyhne, které je nutno v editoru opravit. Zkusme do našeho souboru program.cpp úmyslně zavléci dvě chyby (místo using namespace std; napišme using namepace std; a na řádce cout << .... vynechme ukončovací znak ;

Editace zdrojového kódu

Po přepnutí do okna terminálu spustíme kompilátor g++. Před přepnutím nesmíme zapomenout v programu GNU Emacs uložit soubor pomocí klávesové zkratky C-x C-s! Nyní již kompilátor během překladu vypíše na výstup chyby a spustitelný soubor nevytvoří.

Chyby při kompilaci v příkazové konzoli

Nyní se budeme cyklicky přepínat mezi oknem terminálu a oknem programu GNU Emacs. Vždy, když obdržíme od kompilátoru informace o chybách, pokusíme se chyby v editoru GNU Emacs opravit a upravený soubor uložit. Po přepnutí zpět do terminálu, spustíme další překlad - právě díky tomuto "sekvenčnímu" opravování chyb (kompilátor → editor → kompilátor → ...) je výhodné po editaci cpp souboru editor GNU Emacs neuzavírat.

U našeho ukázkového souboru pozdrav.cpp kompilátor oznamuje první chybu na řádce 5.

Chyba při kompilaci v okně XTermu

Opravíme chybu na řádce číslo 5 (místo slova namepace uvedeme klíčové slovo namespace), soubor uložíme a spustíme kompilátor. Kompilátor hlásí jednu chybu na řádce 9.

Chyby při kompilaci v příkazové konzoli
Chyby při kompilaci v příkazové konzoli

Pozn.: v editoru emacs se číslo řádky zobrazuje v mode-line, bezprostředně za znakem L.

Číslo aktuálního řádku v GNU Emacs
Číslo aktuálního řádku v GNU Emacs

Na řádce číslo 9 však překvapivě žádná chyba není. Příkaz na řádce číslo 7 není ukončen středníkem a kompilátor tedy předpokládá, že ukončení příkazu se nachází na řádkách následujících. To však není pravda a kompilátor označí chybu na řádce 9. Pokud přidáme na konec řádky 7 středník, proces kompilace již proběhne bez chyb.

Shrnutí základních bodů

  1. Nalogovování na lokální počítač, spuštění grafického uživatelského prostředí - systém X Windows.
  2. Vytvoření pracovního adresáře a následný přesun do tohoto adresáře.
  3. Otevření C++ souboru v editoru emacs, editace zdrojového kódu.
  4. Kompilace zdrojového souboru v terminálovém okně, v případě chyb editace v editoru GNU Emacs následná kompilace, ....
  5. Spuštění vytvořeného programu.

Dodatek

Předchozí text předpokládal fyzický přístup k počítači s operačním systémem GNU/Linux. Pokud fyzický přístup k takto vybavenému počítači nemáme (stále prý existují studenti nemající doma GNU/Linux;-) a přesto chceme vytvářet C++ programy v prostředí GNU/Linux, existuje možnost v podobě přihlášení se ke vzdálenému UNIXovému serveru (např. server josef.fsv.cvut.cz). Po přihlášení k hostiteli (např. pomocí programu putty) je postup při tvorbě C++ aplikace téměř totožný s výše popsaným postupem. Jediným rozdílem je nemožnost otevření více oken současně (přestože uživateli nic nebrání přihlásit se k serveru 2x a vytvořit tak "dvě okna"). Veškerá práce (tedy editace a kompilace) bude nyní prováděna pouze v jednom okně. Po spuštění editoru emacs s parametrem nazev_souboru.cpp a následné editaci, soubor uložíme a editor GNU Emacs suspendujeme klávesovou zkratkou C-z. Nyní emacs běží na pozadí a uživatel může zadávat další příkazy

$ emacs

V této fázi lze spouštět překladač, po překladu je možno znova pokračovat v editaci po zadání příkazu fg či pomocí %emacs.

$ g++ pozdrav.cpp
$ fg

Tedy cyklus (editace -> suspendace editoru → kompilace → %emacs → editace → ...) nahrazuje cyklus s přepínáním oken.


[ zpět ]