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ň