![]() |
CYBOI under Windows
Teodora Kikova AufgabestellungCYBOI (Interpreter Programm, in der Sprache
C geschrieben) unter Windows zum Laufen zu bringen, konkret: - Batch
Files für die Compilierung schreiben und GNU gcc verwenden - Windows Funktionen zum Zeichnen von GUIs
in den CYBOI hinzufügen Dafür braucht
man: -
CVS (Concurrent Versions System) Client Quellen1. cyboi-source.tar.bz2 F http://developer.berlios.de/project/showfiles.php?group_id=669 2. exclude.txt 3.
Makefile.txt 4.
od. src.zip (Source ohne X11-Bibliotheck) und admin.zip
(Makefile.txt und exclude.txt – ohne X11-Bibliotheck) Projektliste: mailto:cybop-developers@lists.berlios.de Projektplan: http://cybop.berlios.de/plan/0_3_0_0/features.html Bug-Reports: http://developer.berlios.de/bugs/?group_id=669 http://developer.berlios.de/bugs/?func=addbug&group_id=669 Programm unter Linux starten Das Programm
macht weiter nichts, als sich selbst wieder zu beenden. CYBOL
Dateien braucht man nicht; diese können noch nicht gelesen werden. Unter Linux wird das Programm
mit folgendem Befehl gestartet: cyboi exit In der Linux
Shell sieht das z.B. so aus: christian@chris:~/tmp/admin$
../bin/cyboi exit wait
i: 0 wait
s: 134581736 wait
p: 0 wait a:
134555664 wait astr:
operation wait as: 9 TEST param0: exit TEST
param0s: 4 Wenn man das Programm ohne "exit"
Parameter startet, sieht das so aus: christian@chris:~/tmp/bin$
./cyboi Usage: cyboi
signal Example: cyboi cybop.sample.hello_world.dynamics.startup Loesung der Aufgabe1.
Mögliche Compiler für die Lösung unter Windows
1 Es gibt DJGPP è gcc - Compiler für Dos
Ä
DJGPP is a complete 32-bit C/C++ development system for Intel 80386 (and
higher) PCs running DOS. It includes ports of many GNU development
utilities. The development tools require a 80386 or newer computer to run, as
do the programs they produce. In most cases, the programs it produces can be
sold commercially without license or royalties. Ä
You cannot install GCC by itself on MSDOS; it will not
compile under any MSDOS compiler except itself. You need to get the
complete compilation package DJGPP, which includes binaries as well as
sources, and includes all the necessary compilation tools and libraries. http://www.mathematik.uni-ulm.de/sai/ws00/soft/gccwin/gccwindos.html
2 MinGW è gcc-Compiler für Windows, oder Umgebung MSyst;
dies ist etwa das gleiche wie MinGW, nur etwas
kompakter, d.h. eine kürzere
Version davon. Ä
MinGW ("Minimalistic GNU for Windows") MinGW basiert auf dem populären Gnu-Compiler GCC,
erweitert um eine Reihe von Header- und Include-Dateien um native Windows-Applikationen
erstellen zu können. Ä
MinGW besteht aus eine Ansammlung von Header Files und Import Libraries welche
es ermöglichen GCC zu benutzen um Windows Programme zu
erstellen. Im gegensatz zu Cygwin wird keine Dll benötigt. Die
verfügbaren Tool umfassen aktuell die GNU Compiler Collection (GCC),
GNU Binary Utilities (Binutils), GNU debugger (Gdb), GNU make,
und noch einiges mehr. (Siehe Homepage) Ä
Early in 2002 the MinGW team delivered a package they had dubbed MSYS.
This is a Minimal SYStem providing a self hosted mingw32 target POSIX
style environment. The updates to this package and it's utilities are more
controlled as the entire package (which uses subsets of many smaller packages)
is considered to be one package. This package is also delivered in a Win32
style setup installation binary for better control of the installation. https://prodigy.informatik.uni-tuebingen.de/Info1-WS02/software_gcc_win.html http://wikibooks.org/wiki/Programmierkurs_C-Plusplus:_Informationen_zu_verschiedenen_Compilern
3 gcc mit Cygwin Ä
Cygwin is a Linux-like environment for Windows. It consists of two parts: è A DLL (cygwin1.dll)
which acts as a Linux emulation layer providing substantial Linux API
functionality. è A collection of
tools, which provide Linux look and feel. Ä
The Cygwin DLL works with all non-beta, non "release
candidate", ix86 32 bit versions of Windows since Windows 95,
with the exception of Windows CE. Ä Cygwin is
not a way to run native linux apps on Windows. You have to rebuild your
application from source if you want to get it running on Windows. Cygwin
is not a way to magically make native Windows apps aware of UNIX
functionality, like signals, ptys, etc. Again, you need to build your apps from
source if you want to take advantage of Cygwin functionality. http://tutorials.tanmar.de/cygwin.php http://tutorials.tanmar.de/cygwin_lokal.php http://www.pl-berichte.de/t_system/cygwin.html http://www.manpage.ch/cygwin.html http://www.uni-giessen.de/hrz/software/cygwin/xfree86/install-anleit.html http://www.tu-freiberg.de/urz/anleitungen/cygwin/cygwin.html http://www.pl-berichte.de/t_system/print/cygwin.html http://www.kfa-juelich.de/zam/docs/tki/tki_html/t0375/t0375.html a Informationen
zu GCC (gcc und g++): http://www.uni-bayreuth.de/departments/math/serv/cip/prog/gcc_compiler.html http://www.gnu.org/directory/GNU/gcc.html http://members.surfeu.de/matthias.prinke/computers/misc.html http://www.uni-bayreuth.de/departments/math/serv/cip/prog/gcc_compiler.html http://www.plt.rwth-aachen.de/ov/cygwin.html 2.
Entscheidung welche Compiler-Lösung für die Aufgabe am besten passt,
durchgeführte Tests, begleitende Probleme F Ich habe erst mal DJGPP
(mit gcc 2.95) heruntergeladen und installiert. 2. Problem: Wenn man dann den Source ohne X-11-Bibliotheck
nimmt, dann hat der Compiler Problem mit den Source-Dateien, weil
diese mit gcc 3.3 unter Linux kompiliert worden sind. Das
Kompilieren ist mir wieder nicht gelungen, da eine lange Reihe von Fehlern
aufgetreten ist. Ich habe manche davon geprüft, weil ich ungefähr sehen wollte,
wo das Problem liegt. Es hat sich festgestellt, dass die meisten
Fehlermeldungen von der Quellkode kommen. Der Compiler (Version 2.95
gcc-Dos) kann nicht mit dem Source umgehen, da die
Variablendeklarationen auch nach dem Aufruf von Funktionen gemacht worden sind.
Es gibt auch andere Fehlermeldungen, aber die oben genannte kommt am häufigsten
vor, d.h. es müssen dann alle Quellkode-Dateien verändert werden und dies ist
nicht so praktisch und zeitaufwendig. Das Programm ist wirklich rein
Funktional, aber benutzt teilweise den Syntax von c++. Die Kommentare
sind wie bei c++ mit "//" definiert und die
Variablendeklarationen nach dem Funktionsaufruf zu finden, ansonsten habe ich
selber nicht so viel Ahnung von c++, was ich schlecht beurteilen kann.
Auf jeden Fall gcc 2.95 kommt damit nicht zurecht. Wenn ich gcc -x
c++ benutze, dann kann ich wiederum nicht kompilieren, da gcc c++
bestimmte Typen aus der C-Sparche nicht kennt, also in beiden Fällen,
wäre die Kode zu ändern. Auch kommt noch dazu, dass ich keine neuere Version z.
B. gcc 3.3 für DJGPP gefunden habe, somit ist gcc 2.95 in
Moment schon alt und für die Zukunft noch älter und nutzloser. Aus diesem Grund
ist die Lösung mit der DJGPP nicht effizient und wurde verworfen. F Die Variante 2,
d.h. MinGW wurde nicht getestet, aus dem Grund, dass ich mich nach
langem Lesen, durchgeführten Tests und Internet-Literatur-Informationen gleich
für die dritte Variante gcc mit Cygwin entschieden habe. F
Zu der dritten Variante gcc mit Cygwin Ich habe nochmals alles mit Cygwin
kompiliert und geprüft. Das Kompilieren geht problemlos, sogar die Source-Kode
mit X11-Bibliothek. Es hat sich festgestellt, dass das Programm nur 2
Bibliotheken braucht, um die erzeugte Exe-Datei nach dem Kompilieren
unter irgendeinem Windows-Rechner zum Laufen zu bringen Dies sind cygwin1.dll
und cygX11-6.dll. Diese kann man auch statisch zu der Exe-Datei
binden, sodass eine größere Exe-Datei entsteht, was problemlos ohne Cygwin-Umgebung
gestartet werden kann, aber in Prinzip geht auch, wenn die Exe-Datei und
die 2 Bibliotheken in einem Verzeichnis zu
finden sind, also statisches Binden ist auch nicht unbedingt notwendig. Wenn man alle drei Dateien zippt, dann
kommen wir auf ungefähr 1 MB Grösse, was sogar auf eine Diskette passt. Ich glaube, dass dies die beste
Variante wäre, das Programm unter Windows-Rechner zum Laufen zu bringen,
da man weiterhin an der Kode arbeiten kann, ohne irgendwelche Veränderungen od.
Compiler-Anpassungen, noch brauchen wir zum Kompilieren unter Windows
keine Kode-Umstellungen (die eigentlich immer nur mit einer bestimmten
Compiler-Version fehlerfrei laufen könnten, was uns immer an einer
bestimmten Compiler anbindet), noch ist nicht mehr notwendig auf jedem Windows-Nutzer-Rechner,
den selben Compiler zu installieren usw. Nächsten Vorteil
wäre, dass wir für das Kompilieren nicht die vollständige Version von Cygwin
brauchen. Ich habe eine Teilversion vom Netzt heruntergeladen und installiert.
Das Kompilieren ging problemlos, also dies spart uns auch Zeit, da die
vollständige Cygwin Version sehr groß ist und herunterladen von Netz vor
allem durch Modem extrem lange dauert und auch noch danach beim Installieren
viel Platz nimmt. Nächstes Vorteil ist, dass wir die
selbe Makefile, was unter Linix zum Kompilieren gebraucht worden
ist, hier auch nutzen können, ohne irgendwelchen Veränderungen od. Anpassungen.
Also, wir brauchen in diesem Falle keine separate Batch-Datei, die das
Programm unter Windows kompiliert. Sobald die Source-Kode
entpackt ist und im Cygwin-Umgebung das Kommando Make angeben worden ist, kompliliert Cygwin
problemlos die Source-Dateien und erzeugt eine Exe-Datei, die
zusammen mit den oben genannten 2 Bibliotheken(cygwin1.dll und cygX11-6.dll.)
wiederum problemlos auf irgendeinen Windows-Rechner gestartet werden
kann, ohne Cygwin-Umgebung installieren zu müssen. Also, wenn das
Programm mit Cygwin kompiliert ist und die Exe-Datei erzeugt
worden ist, brauchen wir auf dem Nutzer-Rechner keine Cygwin-Umgebung zu
installieren, das Programm kann mit Windows-Eingabekonsole bearbeitet
werden, braucht nur die oben genannten 2 Bibliotheken. Man spart wirklich viel
Arbeit und Ärger und das ganze läuft völlig unabhängig von Cygwin. Dies
ist der nächste Vorteil, der für die Cygwin-Lösung gesprochen hat. Also,
diese Lösung hatte am meisten Vorteile und bezogen auf die oben gestellte
Aufgabe die schnellste, effiziente, problemlosigste, zeitsparernste und die
unkompliziertste Lösung. 3. Anleitung
zum Kompilieren von CYBOI unter Windows mit Hilfe von Cygwin: Ø
Cygwin installieren (Internet-Adresse: http://cygwin.com/ml/cygwin/) Achtung: Prinzipiell ist Cygwin nun
installiert. Bei mir war das XFree86-System direkt nach der Installation leider
noch nicht benutzbar, weil einige Dll’s nicht gefunden wurden. Die
betreffenden Dateien liegen im Unterverzeichnis "bin"
des Cygwin Ordners. Die saubere Lösung ist, den Pfad um einen Eintrag
zum Verzeichnis "bin" im Cygwin-Verzeichnis zu erweitern.
Unter Windows 98/ME muß man dazu die Datei "c:\autoexec.bat"
editieren und den Eintrag "SET PATH=..." um den Text "C:\Programme\Cygwin\bin"
erweiten. Die verschiedenen Verzeichnisse, die im Pfad stehen, werden
dabei durch ein Semikolon getrennt. Hat man Cygwin in ein anderen
Verzeichnis installiert, muß der Text natürlich entsprechend angepasst werden. Der
fertige Eintrag sieht dann in etwa so aus: Unter Windows NT/2000/XP wird
die Einstellung des Pfads in der Systemsteuerung vorgenommen. Man wählt
dazu das Icon "System" und wechselt auf den Reiter "Erweitert".
Dort gibt es denn Button "Umgebungsvariablen". Im Feld "Systemvariablen"
findet sich dann der Eintrag "Path": Über "Bearbeiten"
kann man den bestehenden Eintrag um ein Semikolon und das Cygwin-Verzeichnis erweitern: Damit die Änderung aktiv
wird empfiehlt es sich, das System entweder neu zu starten oder alle Windows-Explorer
zu beenden und neu zu öffnen. Ø
Die vollständige Version von Cygwin ist nicht nötig. Ø
Die Source-Dateien entpacken (z. B. in Cygwin: tar –xzf
cybol-tar.gz) Ø
Beim Entpacken werden automatisch zwei Verzeichnisse erzeugt: „src“
und „admin“ Ø
Das „src“-Verzeichnis enthält die folgende Unterverzeichnisse: cvs,
symbol, dynamics, model, logger, sygnal, statics, test, x_windwows, die
alle Quellkode-Dateien enthalten. Ø
Das „admin“-Verzeichnis enthält die Makefile-Datei und die Exclude-Datei,
die alle Kommandos und Anweisungen für das Kompilieren enthalten. Ø
Dieses gilt sowohl für die Kode, die mit X-11-Bibliothecken
kompiliert worden ist, als auch für die Kode ohne X-11-Bibliothecken Ø
Keine Batch-Datei ist nötig, wir können die Makefile-Datei,
die man für das Kompilieren unter Linux benutzt, hier ohne irgendwelchen
Anpassungen anwenden. Ø
Starten der Cygwin-Konsole Ø
Wechseln in das Verzeichnis, wo sich die Makefile-Datei befindet
(Wenn die Makefile sich nicht in „admin“-Verzeichnis befindet,
dann können wir die Datei einfach in dem „src“-Verzeichnis kopieren) Ø
Eingeben das Kommando „Make“ Ø
Cygwin startet das Kompilieren-Prozess Ø
Es werden neue Verzeichnisse erzeugt: „obj“- und „bin“-Verzeichnis Ø
Im „bin“-Verzeichnis wird die Exe-Datei geschrieben (bei uns
ist dies die cyboi.exe). Im „obj“-Verzeichnis werden alle „ .o
“-Dateien eingelegt, die von den Source-Dateien „ .c “
erzeugt werden. Ø
Um die Exe-Datei unabhängig von Cygwin zu starten brauchen
wir die folgenden zwei Bibliotheken: cygwin1.dll und cygX11-6.dll Ø
Diese kann man auch statisch beim Kompilieren an die cyboi.exe-Datei
anbinden, wobei eine größere cyboi.exe-Datei entsteht, die man
problemlos auf irgendeinen Windows-Rechner selbständig und unabhängig
von Cygwin gestartet werden kann Ø
Man kann genauso gut danach die cyboi.exe-Datei von der Windows-Eingabekonsole
gestartet werden. (od. eventuell per Doppeltklick, in diesem Falle müssen die
Bibliotheken in dem selben Verzeichnis sein, wo die cyboi.exe ist) Ø
Cygwin-Umgebung muß auf dem Nutzer-Rechner nicht unbedingt installiert werden Ø
Man kann auch die Pfade einstellen, wenn man die cyboi.exe starten
will, ohne man sich direkt in dem Verzeichnis befinden zu müssen, wo diese
steht. In diesem Falle muß man der Umgebungsvariable „Path“ einen neuen
Eintag setzen, nämlich das Verzeichnis wo sich die cyboi.exe-Datei
befindet. Weiterfuehrende Linkshttp://tutorial.schornboeck.net/windows_comp.htm http://www.c-worker.ch/compiler/ http://www.thomas-guettler.de/vortraege/oss4win/oss4win.html http://packman.links2linux.de/?action=097 http://www.cpp-tutor.de/cpp/le01/le01_01.htm http://home.eplus-online.de/alfred/alfred/f0056.htm#M576 http://tutorials.tanmar.de/cygwin_netz.php http://www.linux-magazin.de/Artikel/ausgabe/2002/12/cygwin/cygwin.html http://www.oscg.ch/rsc/tools/standalone/cygwin.html http://cplus.kompf.de/artikel/cygwin.html http://www.wire.tu-bs.de/ADV/texte/inf3text/node7.html |
Copyright (c) 2004-2004. The CYBOP Webmasters. All rights reserved. GNU FDL license. Last Update: 2004-07-09 |