Virtual OS/2 International Consumer Education
VOICE Homepage: http://de.os2voice.org
November 2001

[Inhaltsverzeichnis]
[Vorherige Seite] [Nächste Seite]
[Artikelverzeichnis]

editor@os2voice.org


Watcom C/C++ 11.0c unter OS/2 nutzen

Von Michal Necasek © November 2001, Übersetzung: Christian Hennecke

Nach unerwartet langer Wartezeit hat nun das OpenWatcom Team (ich sollte nützlicherweise wohl erwähnen, daß ich ein Mitglied bin) endlich den ersten Schritt auf dem Weg zum OpenWatcom Compiler veröffentlicht, den Watcom 11.0c Binary "Patch". Es sind Dateien sowohl für C/C++ als auch FORTRAN verfügbar, aber da ich kein FORTRAN beherrsche (und wohl auch die wenigsten von Ihnen), werde ich mich ausschließlich auf die C/C++ Compiler konzentrieren (und mich manchmal auf sie einfach als "Watcom" beziehen, um mir einiges an Schreibarbeit und Ihnen an Lesearbeit zu ersparen). Die Watcom C/C++ und FORTRAN Compiler haben jedoch einiges gemeinsam und viele der hier besprochenen Details treffen auf beide zu.

Für den Fall, daß Sie Watcom C/C++ noch nie benutzt haben und nichts über diesen Compiler wissen, sollte ich erklären, was ihn von den meisten anderen Compilern unterscheidet: Watcom ist ein Cross-Compiler. Erst einmal ein paar nützliche Begriffe:

Die Host- und Zielplattform sind oftmals identisch, aber sie müssen es nicht sein. Die momentan unterstützten Zielplattformen sind 16-bit und 32-bit DOS, 16-bit und 32-bit OS/2, 16-bit und 32-bit Windows und Novell NetWare. Mit gewissen Einschränkungen kann auf jeder beliebigen Hostplattform für jede beliebige Zielplattform entwickelt werden, in der Praxis sind jedoch die besten Hostplattformen OS/2 und Win32. Ich sollte vielleicht anmerken, daß es auf jeder Hostplattform nur ein einziges Compiler/Linker-Programm gibt, welches für jede beliebige Zielplattform Programme erzeugen kann (tatsächlich gibt es mehrere Compilerprogramme, aber jedes unterstützt alle Ziele).
Das macht Watcom zu einer exzellenten Wahl, wenn man für verschiedene Plattformen entwickelt.

Mitte der 90er Jahre erfuhr Watcom C/C++ einen großen Popularitätschub, da der Compiler für die meisten Spiele benutzt wurde - große Hits wie DOOM oder Warcraft II wurden mit Watcom "gebaut". Der einfachste Weg um festzustellen, ob ein Spiel oder Programm mit dem Watcom Compiler entwickelt wurde, ist nachzusehen, ob es den DOS/4GW Extender benutzt - das W steht für Watcom und dieser beliebte Extender funktioniert nur mit Watcom Compilern und wurde mit diesen mit einer gebührenfreien Runtime-Lizenz ausgeliefert.

Für OS/2-Entwickler bietet Watcom eine "einzigartige" Eigenschaft - er kann 16-bit Code generieren und damit zur Entwicklung von Gerätetreibern verwendet werden. Die einzige andere Wahl scheint der uralte Microsoft C 6.0A aus dem DDK zu sein, für den es keinerlei Unterstützung gibt. Alle anderen OS/2-Compiler sind ausschließlich 32-bittig.

Aber zurück zu Watcom 11.0c. Er wird etwas irreführenderweise als "Patch" bezeichnet. Es handelt sich um einen Patch in dem Sinne, als man ihn über eine bestehende Watcom-Installation installieren muß, um alle Fähigkeiten der vorherigen Versionen zu erhalten. Andererseits brauchen Sie je nach Ihren Anforderungen vielleicht keine vorherige Installation. Der Grund für diese Komplikationen ist, daß Watcom Compiler mit diversen Dateien von Drittanbietern, wie Headern, Bibliotheken und Hilfsprogrammen, ausgeliefert wurden, die mit auszuliefern das OpenWatcom Team nicht die Rechte hat. Ich werde nun die verschiedenen Zielplattformen erläutern, und was in 11.0c fehlt.

Watcom 11.0c behebt einige seit langem bestehende Probleme der vorherigen Versionen mit OS/2, wie Abstürze des Debuggers beim Start unter neueren OS/2 Kerneln (technisch gesehen kein Fehler in Watcom) oder die Erzeugung fehlerhafter Fixups durch den Linker für 16-bit API Aufrufe von 32-bit Code aus.

OK, gehen wir nun ans Eingemachte. Ich werde eine kurze Installationsanleitung für Watcom C/C++ 11.0c unter OS/2 geben. Grundsätzlich gibt es zwei Möglichkeiten:

Von nun an spreche ich nur über die zweite Möglichkeit - die Durchführung einer "sauberen" Watcom 11.0c Installation. Ich werde auch nur auf das eingehen, was man für die 32-bit OS/2-Entwicklung braucht. Die notwendigen Schritte sind:

  1. Laden Sie die Watcom 11.0c Dateien von openwatcom.org herunter. Der 11.0c Patch ist in zwei Formen verfügbar, es gibt ein einzelnes selbstinstallierendes Programm oder eine Anzahl kleinerer ZIP-Dateien. Das selbstinstallierende Archiv ist ein Win32-Programm, daß gut unter Odin zu funktionieren scheint. Wenn Sie eine Breitbandverbindung haben, möchten Sie sich vielleicht dies besorgen. Die ZIP-Dateien befinden sich auf der OpenWatcom FTP-Site und Sie brauchen nur die Dateien herunterzuladen, die Sie brauchen. In dem FTP-Verzeichnis liegt eine README-Datei, welche die Dateien kurz beschreibt - das sollte selbsterklärend sein. Wenn Sie nur an OS/2-Entwicklung interessiert sind, holen Sie sich die mit all und os2 markierten Dateien und entpacken Sie sie in ein Verzeichnis (X:\WATCOM wäre eine gute Wahl).

  2.  
  3. Installieren Sie das OS/2 Toolkit. Die neueste Version (4.5) ist auf den MCP oder eCS CDs oder von der IBM Developer Toolbox (nur für Abonnenten) erhältlich. Ältere Versionen sollten auch funktionieren.

  4.  
  5. Nachdem alle Watcom-Dateien installiert worden sind, müssen ein paar Umgebungsvariablen gesetzt werden. Sie können Sie der CONFIG.SYS hinzufügen, wenn Watcom der einzige Compiler ist, den Sie benutzen - wenn Sie jedoch wie ich drei bis vier verschiedene Compiler verwenden, brauchen Sie eine separate CMD-Datei. In c_readme.txt auf der OpenWatcom FTP Site ist eine Beispieldatei, aber ich präsentiere hier eine etwas andere Version, die für eine alleinige 11.0c Installation gedacht ist:
  6. @ECHO OFF
    SET WATCOM=C:\WATCOM
    SET TOOLKIT=C:\TOOLKIT
    SET PATH=%WATCOM%\BINP;%WATCOM%\BINW;%PATH%
    SET INCLUDE=%WATCOM%\H;%TOOLKIT%\H
    SET ED PATH=%WATCOM%\EDDAT
    SET HELP=%WATCOM%\BINP\HELP;%HELP%
    SET BOOKSHELF=%WATCOM%\BINP\HELP;%BOOKSHELF%
    SET BEGINLIBPATH=%WATCOM%\BINP\DLL
    SET LIB=%TOOL KIT%\LIB;%WATCOM%\LIB386\OS2;%WATCOM%\LIB386;
    Sie können diese CMD-Datei nennen und plazieren, wie und wo immer Sie wollen. Wenn Sie Watcom 11.0c und/oder das OS/2 Toolkit in abweichende Verzeichnisse installiert haben, müssen Sie die CMD-Datei natürlich entsprechend anpassen. Es wird vorausgesetzt, daß Sie die Toolkitinstallation Ihre CONFIG.SYS haben ändern lassen - falls nicht, müssen Sie das Verzeichnis \Toolkit\bin zum PATH hinzufügen, damit Hilfsprogramme wie der Ressourcencompiler (RC) laufen können.
     
  7. Wenn Sie obere CMD-Datei starten (die Sitzung muß aktiv bleiben), sollten Sie überprüfen, ob die Watcom Tools richtig arbeiten. Wenn Sie beispielsweise wcc386 starten, sollten Sie die Compilermeldung und eine Liste von Optionen sehen. Falls das nicht funktioniert, müssen Sie die Sache ein wenig zurückverfolgen - höchstwahrscheinlich sind PATH oder (BEGIN)LIBPATH  nicht richtig gesetzt.

  8.  
  9. Wenn Sie den Compiler starten können, sollten Sie überprüfen, ob der Rest der Umgebung richtig eingerichtet ist, indem Sie einfache Beispielprogramme erzeugen. Hier ist eines namens hello.c:
  10. #include <stdio.h>

    void main(void)
    {
        printf("Watcom 11.0c says Hi!\n");
    }

    Erstellen Sie dieses Programm nun mit
    wcl386 hello.c
    Sie sollten folgende Ausgabe sehen:
    Watcom C/C++32 Compile and Link Utility Version 11.0c
    Copyright by Sybase, Inc., and its subsidiaries, 1988, 2000.
    All rights reserved.  Watcom is a trademark of Sybase, Inc.
          wcc386 hello.c
    Watcom C32 Optimizing Compiler  Version 11.0c
    Copyright by Sybase, Inc., and its subsidiaries, 1984, 2000.
    All rights reserved.  Watcom is a trademark of Sybase, Inc.
    hello.c: 6 lines, included 477, 0 warnings, 0 errors
    Code size: 24

    WATCOM Linker Version 11.0c
    Copyright by Sybase, Inc., and its subsidiaries, 1985, 2000.
    All rights reserved.  Watcom is a trademark of Sybase, Inc.
    loading object files
    searching libraries
    creating an OS/2 32-bit executable

    und die Dateien hello.obj und hello.exe sollten erzeugt werden. Wenn Sie das hello Programm starten, sollten Sie die Grußnachricht auf der Konsole sehen. Wenn Sie dies tun, haben Sie wahrscheinlich den Großteil der Umgebung richtig konfiguriert. Falls nicht, überprüfen Sie insbesondere die Variablen INCLUDE und LIB, je nachdem was genau schiefgegangen ist.
     
  11. Versuchen Sie nun etwas komplizierteres - ein einfaches PM-Programm zur Überprüfung der korrekten Einbindung des Toolkits. Dazu sind einige Dateien notwendig, die Sie hier finden. Sie sollten Sie in ein eigenes Verzeichnis entpacken und von da aus wmake (das Watcom make Hilfsprogramm) aufrufen. Nun sollten Sie Nachrichten von wmake, wcc386, wlink und rc (eine Menge) bekommen. Wenn Sie pmhello starten, sollten Sie ein einfaches PM-Fenster sehen. Falls nicht, sind die zu überprüfenden Einstellungen wieder die Umgebungsvariablen INCLUDE und LIB sowie PATH, falls der Ressourcencompiler nicht richtig läuft (Anmerkung: Ältere Versionen des RC haben einen Fehler, der sie am Funktionieren hindert, wenn die Umgebungsvariable PATH zu lang ist). Dies ist nicht als umfassendes PM-Beispielprogramm gedacht, aber Sie können daran nach Herzenslust herumhacken.

Wenn Sie soweit gekommen sind, herzlichen Glückwunsch, Sie sind bereit! Sie werden wohl noch den Debugger (wd oder wdw) testen und die Watcom IDE (starten mit dem ide Befehl) nutzen wollen, wenn Sie IDEs der Kommandozeile vorziehen. Falls Sie den vi Editor kennen, können Sie die mit Watcom ausgelieferte (und passenderweise vi genannte) Version benutzen. Und Sie sollten natürlich die Onlinedokumentation lesen - die wichtigsten Onlinebücher sind CGUIDE, PGUIDE, CLIB, CLR und LGUIDE (Sie können view cguide etc. von der Kommandozeile aus verwenden). Außerdem ist noch C_README lesenswert, wenn es auch nicht 100%ig auf 11.0c anwendbar ist -  es enthält eine Einführung in die Nutzung der Watcom IDE. All diese INF-Dateien befinden sich in X:\WATCOM\BINP\HELP.

Ich habe nur die Oberfläche dessen, was alles in Watcom 11.0c drinsteckt, berührt. Neben den offensichtlichen C und C++ Compilern, dem Linker, Make Tool, Debugger und der IDE, die ich schon erwähnt habe gibt es einen "Bibliothekar" (wlib),  Assembler (wasm), Disassembler (wdis), C++ Klassenbrowser (wbrw) und Profiler (wprof). Ausprobieren ist der Schlüssel - und auch das Lesen der Onlinedokumentation.

Die OpenWatcom Website hält weitere Watcom-bezogene Ressourcen bereit, wie FAQs oder Links zu Supportnewsgruppen. Sie ist ein geeigneter Ort, um mit der Suche nach mehr Informationen und Support zu beginnen. Viel Spaß und entwickeln Sie die nächste Killerapplikation für OS/2 mit Watcom C/C++ 11.0c!

Quellenverzeichnis:
Watcom C/C++ 11.0c
Entwickler: OpenWatcom Website - http://www.openwatcom.org
Preis: Free

Download site - http://www.openwatcom.org/download.html


[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org