VOICE Homepage: http://de.os2voice.org |
November 2001
[Inhaltsverzeichnis]
|
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.
32-bit OS/2 - Header, Bibliotheken und Hilfsprogramme sind erforderlich. Watcom C/C++ 11.0c funktioniert gut mit dem IBM OS/2 Toolkit Version 4.0 und 4.5. Viele Watcom-Anwender haben jedenfalls separate Toolkits installiert, da Watcom mit der uralten Toolkit Version 2.1 ausgeliefert wurde.
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:
@ECHO OFFSie 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.
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;
#include <stdio.h>Erstellen Sie dieses Programm nun mitvoid main(void)
{
printf("Watcom 11.0c says Hi!\n");
}
wcl386 hello.cSie sollten folgende Ausgabe sehen:
Watcom C/C++32 Compile and Link Utility Version 11.0cund 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.
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: 24WATCOM 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
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 |
[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org