EMX =-=-=-= MS-DOS není mrtvý, pouze tak smrdí -- Henry Spencer EMX je port GCC pro OS/2, DOS, Windows3.1 a Windows95/NT vytvořený Eberhardem Mattesem. Naprostá většina GNU programů je pod OS/2 přeložená právě tímto překladačem. Na rozdíl od DJGPP či CygWin32 EMX používá extendery, které vytvoří shodné API na všech zmíněných platformách. Pokud aplikace nepoužívá žádné nativní služby některého z podporovaných systémů, je možné spustit výsledný program na libovolném z nich. Každý z podporovaných systémů má vlastní extender. Ty zprostředkovávají nejdůležitější služby závisle na architektuře jako memory management, textový vstup a výstup (řádkově i fullscreen), práci se soubory, multithreading (nekompatibilní s POSIXem), multitasking (fork, komunikaci pomocí pipe), a další. Je to vlastně emulátor jednoduchého EMX operačního systému s API velmi podobnému UNIXu. Přes celkem velkou komplikovanost extenderů se jejich velikost se pohybuje od 50 do 110KB, a to je stále méně než DOS4GW. Samotný emx.exe (09c) má 50943 B, rsx.exe (5.10) má 107804 B. Pokud ale aplikace potřebuje jiné služby, například grafiku, musí mít speciální kód pro podporované operační systémy. Program si nejdříve ošahá prostředí, v němž běží, a podle toho si buď zavede OS/2 dynamickou knihovnu (emx.dll), anebo pod čistým DOSem nebo VCPI prostředím extender emx.exe (od E. Mattese), či pod DPMI prostředím (např. DOS box v OS/2 či ve Windowsech) si zavede extender rsx.exe (o ten se stará R. Schnitker). Vlastnost, že jediný .exe soubor (mnoho z vás jistě zná tex386.exe anebo mf.exe z emTeXu) funguje pod všemi těmito platformami, je jeho nespornou výhodou oproti DJGPP. Navíc EMX umí generovat i nativní programy pro OS/2 a Windows v případě, že program je příliš závislý na daném prostředí a není třeba požadovat jeho přenositelnost. Důvodem pro vznik EMX byl překlad emTeXu, který se do té doby překládal v komerčních překladačích. Proto je EMX navrženo tak, aby prostředí poskytované aplikaci (API knihoven apod.) bylo co nejpodobnější UNIXu. Díky tomu v něm byly později přeloženy i další GNU programy jako Emacs, texinfo apod. Spočátku EMX neposkytovalo velký komfort pro vývoj nových aplikací (bylo určeno hlavně pro převod hotových programů), ale postupem času se vývojové prostředí emx rozrostlo až do současné podoby (verze emx09c, září 1997), kdy jsou k dispozici veškeré programy sdružené kolem GNU C/C++ překladače. Jsou podporovány i další jazyky, například fortran (f2c a g77), pascal (p2c), GNU ada. Překladač optimalizovaný pro procesory Pentium je pgcc. Jako debugger je možné používat používat gdb (textový) anebo pmgdb (OS/2 Presentation Manager verze, neboli GUI verze gdb), či fullscreen. Programy lze optimalizovat profilerem. Hlavní výhody oproti DJGPP: 1. Funguje i core dump. Pokud program spadne, vytvoří se obraz paměti na disku, ze kterého potom můžete debuggerem zjistit, co bylo špatně. Na rozdíl od DJGPP se nedozvíte jenom číslo řádky, kde program spadnul, ale můžete si prohlédnout i obsah proměnných apod. 2. Vyvíjet můžete na libovolné z podporovaných platforem. 3. Vzniklý program funguje na všech platformách. Standardní knihovny se dodávájí hned ve dvou verzích: single-threaded a multi-threaded. Single-threaded jsou rychlejší a kratší a je možné je používat i v programech použivající thready. Pokud ale více threadů používá knihovní funkce, mohou se dít podivné věci. Multi-threaded knihovna je na tom lépe, má errno pro každý thread a další. Výstup do souboru prý ale ještě úplně thread safe není. Další knihovny dodáváné ve standardní distribuci jsou: bsd, termcap, curses, fl (pro flex), gcc, graph (podporující jednoduchou VGA, EGA a CGA grafiku), os2, regexp, socket, video (interface pro fulscreen text podporovaný extenderem). Nezávislí programátoři přispěli dalšími přídavky: VESA, SVGA, multimedia atd. Víc K jednotlivým platformám. Zřejmě nejznámější aplikací vyvinutou pod gcc/emx je emTeX, kompletní prostředí pro TeXování, které se používá pod OS/2, DOSem i Windowsy. Lze jen poznamenat, že je obecně velice rozšířeným omylem, že emTeX je "DOSovský TeX"; pouze uživatelé OS/2 mají možnost mít na obrazovce současně puštěný editor, překladač i dvipm (dvi prohlížeč pod OS/2), tedy skoro-WYSIWYG systém. Rozhodně největším balíkem programů pro překladač OS/2 (běhající pouze pod OS/2, nikdy ne pod DOSem), která nejsou dílem E. Mattese, jsou XFree86 for OS/2 Tento příklad též názorně dokazuje, jak blízko má OS/2 k Unixu. Dokumentace Dokumentace k EMX je rozsáhlá a podrobná, podobně jako k samotnému GNU C/C++ překladači. Je distribuována jednak ve formátu OS/2kovských hypertextových knížek (.INF), jednak jako čistě textové soubory. (Pro méně znalé uveďmě, že .INF formát je standardním formátem veškeré dokumentace v OS/2, podobně jako .HLP ve Windows či texinfo pro GNU. Prohlížeč view.exe je součástí operačního systému OS/2. Prohlížeč pro DOS je součástí operačního systému PC-DOS. Prohlížeč pro Windows je na síti volně k dispozici.) To, že na rozdíl od většiny GNU programu dokumentace ale není v texinfo formátu, ale ve formátu bežném na daném operačním systému přináší ale i některé potíže. Pokud nemáte OS/2 nebo PC-DOS, jste odkázání na textovou podobu .INF dokumentace. Naštěstí jsou ale k dispozici prohlížeče tohoto formátu pro DOS (FIXME jmena a URL) a Windows (FIXME jmeno a URL). Větší potíže působí dokumentace pro RSX, RSXWIN a RSXWIN32, která je k dispozici pouze v .HLP formátu. Navíc dokumentace k RSXWIN32 je v .HLP formátu pro Windows95, který si nepřečtete ani ve Windows3.1. výheň