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ň