Jakožto závěrečnou semestrální práci v předmětu Programování v jazyce C jsem se rozhodl vypracovat aplikaci pracující s GUI (grafické uživatelské rozhraní). Do té chvíle jsem s GUI pracoval pouze v Javě, a proto jsem se musel porozhlédnou po nějaké knihovně kterou bych mohl použít v Céčku. Po chvilce strávené na všemohoucím Google bylo rozhodnuto pro GTK+ ostatní knihovny jsem vyloučil, buď kvůli nesplnění multiplatformnosti, nebo nemožnosti je používat v čistém Céčku. Multiplatformnost hrála důležitou roli při výběru, poněvadž se považuji za spokojeného uživatele Linuxu, bohužel má škola není zrovna moc „Linux friendly”. Rozhodl jsem se tedy, že aplikaci napíšu pod Linuxem, a potom se ji pokusím portovat pro Windows. Při tomto úkonu může spousta lidí zabloudit, jelikož česky o tomto problému moc informací nenaleznete, proto jsem se rozhodl celou věc sepsat a usnadnit portaci pro mé následovníky.

Kompilace GTK+ aplikace pod Linuxem

Jako první je třeba nainstalovat libgtk2.0-dev, glade-3 (v Ubuntu příkazem: $ sudo apt-get install libgtk2.0-dev glade-3). Dále jsem přemluvil mé oblíbené NetBeans IDE, aby pracovalo s GTK+ podle tohoto návodu. Pokud píšete pouze v textovém editoru a kompilujete pomocí GCC, vystačíte s příkazem $ gcc -Wall aplikace.c -o aplikace -export-dynamic `pkg-config --cflags --libs gtk+-2.0`

Kompilace GTK+ aplikace pod Windows

Pod Windows si instalování užijeme trošku víc :-( .

(1) Instalace GCC kompilátoru

Stáhněte si instalační soubor pro MinGW (umožňuje pracovat s GCC pod Windows)

V instalace zatrhněte balíky: gcc-core a gnu-make

Poté přidejte do systémové proměnné (Ovládací Panely -> Systém -> Upřesnit -> Systémové Proměnné) Path cestu C:\mingw\bin; (dle instalační cesty)

Do příkazového řádku(cmd.exe) napište příkaz: gcc Pokud se na výstupu objeví: "no input files" instalace se povedla v opačném případě je zřejmě špatně nastavena proměnná Path.

(2) Instalace GTK+

Stáhněte si instalační soubor GTK+ a nainstalujte jej do C:\GTK\. (Pozn.: POZOR! S některými instalátory se mi nepovedlo GTK+ rozběhat, proto použijte odkazovaný!)

Spusťte příkazovou řádku (cmd.exe) a napište do ní: pkg-config --libs --cflags gtk+-2.0 Na výstupu by se měl objevit výpis knihoven GTK+. Pokud se objeví hlášení ze pkg-config není vnitřním příkazem… přidejte do Systémové proměnné Path cestu%GTK_BASEPATH%\bin; Pokud pkg-config nemůze najít knihovnu GTK+ nastavte Sys. proměnnou PKG_CONFIG_PATH na %GTK_BASEPATH%\lib\pkgconfig;

(3) Samotná kompilace

  1. Spusťte příkazovou řádku
  2. Příkaz $: pkg-config --libs --cflags gtk+-2.0 > libs.txt
  3. Příkaz $: libs.txt
  4. Pomocí CTRL+C zkopírujte obsah souboru libs.txt
  5. Příkaz $: gcc -Wall -mwindows -g application.c -o application.exe <libs*> Místo <libs*> vložte text ze souboru libs.txt (klikněte pravým tlačítkem na cmd a dejte vložit) Pokud chcete spouštět program i s příkazovou řádkou vynechte argument -mwindows

Závěr

Už víme jak zkompilovat stejný program na různých platformách. Příště se zaměřím, na to jak jej psát aby šel na obou platformách zkompilovat a vypadal zhruba stejně.