Tvorba programů v prostředí OS GNU/Linux 2: Porovnání verzí

Z GeoWikiCZ
 
(Není zobrazeno 6 mezilehlých verzí od stejného uživatele.)
Řádek 28: Řádek 28:


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 <tt>mkdir</tt> 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.
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 <tt>mkdir</tt> 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.
 
[[Image:Tutorial-prog-2-mkdir.png|center|frame|Vytvoření adresáře pomocí příkazu mkdir]]
$ 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 <tt>cd</tt>, dále budeme používat příkaz <tt>pwd</tt> - příkaz vypisující název aktuálního (pracovního) adresáře.
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 <tt>cd</tt>, dále budeme používat příkaz <tt>pwd</tt> - příkaz vypisující název aktuálního (pracovního) adresáře.
Řádek 38: Řádek 38:


Po změně aktuálního adresáře (zde adresář <tt>/home/honza/ahoj</tt>) je již možno vytvořit soubor obsahující zdrojový kód C++ programu, soubor nazveme <tt>pozdrav.cpp</tt>. Soubor vytvoříme spuštěním programu emacs s parametrem program.cpp
Po změně aktuálního adresáře (zde adresář <tt>/home/honza/ahoj</tt>) je již možno vytvořit soubor obsahující zdrojový kód C++ programu, soubor nazveme <tt>pozdrav.cpp</tt>. Soubor vytvoříme spuštěním programu emacs s parametrem program.cpp
 
[[Image:Tutorial-prog-2-invoke_emacs.png|center|frame|Spuštění textového editoru GNU Emacs (proces na pozadí)]]
$ emacs pozdrav.cpp &


Tímto způsobem spustíme v novém okně program GNU Emacs s otevřeným souborem <tt>program.cpp</tt>. Situace vypadá následovně
Tímto způsobem spustíme v novém okně program GNU Emacs s otevřeným souborem <tt>program.cpp</tt>. Situace vypadá následovně
Řádek 55: Řádek 55:
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
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


[[Image:Tutorial-prog-2-kompilovani.png|center|frame|Kompilace v příkazové konzoli]]
$ g++ pozdrav.cpp


Pokud kompilátor během kompilace programu "neoznámí" na výstupu chyby, vytvoří spustitelný soubor <tt>a.out</tt>. Tento soubor již můžeme spustit (upozorňuji na nutnost uvedení ./ před názvem spustitelného souboru)
Pokud kompilátor během kompilace programu "neoznámí" na výstupu chyby, vytvoří spustitelný soubor <tt>a.out</tt>. Tento soubor již můžeme spustit (upozorňuji na nutnost uvedení ./ před názvem spustitelného souboru)
Řádek 67: Řádek 67:
== Kompilace, vytvoření spustitelného souboru a opravy chyb ==
== Kompilace, vytvoření spustitelného souboru a opravy chyb ==


Na konci bodu číslo 3 jsem doporučoval 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 <tt>program.cpp</tt> úmyslně zavléci dvě chyby (místo <tt>using namespace std;</tt> napišme using namepace std; a na řádce cout << .... vynechme ukončovací znak ;
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 <tt>program.cpp</tt> úmyslně zavléci dvě chyby (místo <tt>using namespace std;</tt> napišme using namepace std; a na řádce cout << .... vynechme ukončovací znak ;


[[Image:Tutorial-prog-2-chybny_program_emacs.png|center|frame|Editace zdrojového kódu]]
[[Image:Tutorial-prog-2-chybny_program_emacs.png|center|frame|Editace zdrojového kódu]]
Řádek 101: Řádek 101:
== Dodatek ==
== 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 panda2.fsv.cvut.cz). Po přihlášení k hostiteli (např. pomocí programu [http://en.wikipedia.org/wiki/PuTTY 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 <tt>nazev_souboru.cpp</tt> 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
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 [http://en.wikipedia.org/wiki/PuTTY 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 <tt>nazev_souboru.cpp</tt> 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


[[Image:Tutorial-prog-2-emacs_po_suspendovani.png|center|frame|Proces na pozadí]]
$ 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.
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.


[[Image:Tutorial-prog-2-emacs_fg.png|center|frame|Přepnutí mezi procesy]]
$ g++ pozdrav.cpp
$ fg


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

Aktuální verze z 22. 10. 2006, 19:24

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 ]