GNAT---ein freier Ada95-Compiler
Inhalt:
Allgemeines
Die hier dargebotenen Informationen sollen nur ein erster
Einstieg sein, umfassende Referenz finden Sie in:
Die Bedienung des Compilers
Der GNAT läuft auf allen Alpha Maschinen, d. h. als
erstes sollten Sie sich mit
telnet/rlogin auf einer dieser Maschinen einloggen. Die
Bedienung des Compilers selbst ist kinderleicht---nachdem Sie Ihr
Ada95-Quellprogramm, z. B. hello.adb
, geschrieben hat, rufen
Sie den Compiler mit
gnatmake hello.adb
auf. Nun wird zuerst der gcc gestartet, der als Frontend für den GNAT
fungiert, anschließend der GNAT-Compiler und dann der Binder und
schließlich noch der Linker.
Siehe auch
Vollständige Beschreibung des GNAT.
Nach Eingabe von
hello
sollte dann die berühmte Grußmeldung auf dem Bildschirm erscheinen.
Selbst das Compilieren von Programmen, die mehrere
Übersetzungseinheiten beinhalten, stellt mit dem
gnatmake
-Utility kein Problem dar. gnatmake
stellt
automatisch fest, welche Quelldateien zu übersetzen sind und tut es.
Nehmen wir an, Sie haben ein Programm, stacktst.adb
, das ein
Paket mit dem Namen stack
benutzt, um einen Stack zu simulieren.
In Ihrem Ada-Verzeichnis befinden sich u.a. also folgende Dateien:
stacktst.adb
-- das Hauptprogramm
stack.ads
-- die Paketspezifikation
stack.adb
-- der Paketbody
Geben Sie einfach gnatmake stacktst.adb ein und alle notwendigen
Schritte zur Erstellung des ausführbaren Files stacktst
werden automatisch ausgeführt:
(pax10f) $ gnatmake stacktst.adb
gcc -c stacktst.adb
gcc -c stack.adb
gnatbind -x stacktst.ali
gnatlink stacktst.ali
(pax10f) $
Was ist GNAT?
GNAT steht für GNU NYU Ada Translator und ist ein an
der New York University entwickelter Ada95-Compiler.
Ada95 genießt den Vorzug, die erste genormte objektorientierte
Programmiersprache der Welt zu sein.
Das GNAT-System unterstüzt alle Ada95-Features und
ist
damit ein vollwertiger Ada95-Compiler, der ständig weiterentwickelt
wird.
Der GNAT selbst basiert auf dem GNU C-Compiler und
unterliegt damit der GPL, also der GNU General Public License, die im
wesentlichen besagt, daß Sie den GNAT frei kopieren und auch
verändern dürfen. Um genau zu erfahren, was Sie alles dürfen
und was nicht, lesen Sie bitte die GPL, die es in elektronischer Form
eigentlich überall im Zusammenhang mit GNU gibt.
Besonderheiten beim Umgang mit dem GNAT
Eine vollständige Beschreibung des Systems finden Sie
hier:
Vollständige Beschreibung des
GNAT.
Hier jetzt nur das Wichtigste:
- Beim GNAT sind alle Checks bezüglich Wertebereichsverletzung
abgeschaltet, d. h. bei Integerüberlauf wird *KEIN* constrained_error
gemeldet. Als Grund geben die Macher des GNAT an, daß solche Checks
zu aufwendig sind. Es gibt aber auch eine gute Nachricht---Sie können
sie explizit einschalten!
Dazu dient der Schalter -gnato, der gnatmake als Option auf der Kommandozeile
mit übergeben werden kann. Mit
gnatmake -gnato program.adb
wird Code erzeugt, der Integerüberlauf erkennt und einen
constrained_error auslöst.
- Leider funktioniert obiger Mechanismus nur für Integer, es gibt
keinen Schalter, um Floatüberläufe abzufangen.
Verwenden Sie jedoch einen selbstdefinierten Floattyp mit
eingeschränkter Wertemenge, so funktioniert der Float-Rangecheck ohne
äußeres Zutun!
- GNAT File Name Rules
»Operating in default mode, GNAT requires that file names match
compilation unit names. The default matching rules are as follows: The file
name is obtained by replacing dots in the unit name with minus signs, and
adding a suffix distinguishing bodies and specs. The suffix for specs is
".ads" and for bodies is ".adb".
For example, files containing the unit very_long_unit_name would be called:
very_long_unit_name.ads and very_long_unit_name.adb on systems supporting
long file names.«
Das wären im Moment die wichtigsten Besonderheiten, die mir zum GNAT
einfallen und die für das erstmalige Arbeiten relevant sind. Sollten
Ihnen weitere auffallen, so würde ich mich über eine
diesbezügliche Mitteilung freuen.
Mail genügt: franke@minet.uni-jena.de
Woher bekommen Sie GNAT?
Vorkompilierte Binaries
für verschiedene Architekturen und Betriebssysteme (tar.gz-Dateien)
Quellen
Die Quellen liegen lokal auf der paxp02 unter
/usr/local/www/doc/minet/software/src
Sie werden aktualisiert, wenn ich die Zeit dafür finde---die jeweils
aktuelle Version (tar.gz-Datei) kann aber prinzipiell von
hier bezogen werden.
Hinweise zur Installation des GNAT auf einem
LinuX-System
Die Informationen sind zu umfangreich, um an dieser Stelle
erschöpfend gegeben werden zu können. Wenn Sie planen, den GNAT auf
Ihrem LinuX-System zu installieren und sich bei der Installation nicht sicher
sind, treten Sie bitte vorher mit mir in Verbindung; via Mail oder
persönlich.
Ein kleiner Tip: Lesen Sie sich das Makefile
und die Datei
doconfig
genau durch, und versuchen Sie, den GNAT unter
/usr/local
zu installieren. Letzteres macht eine Deinstallation
recht einfach.
Last but by no means least möchte ich noch auf das
Ada95 Language Reference Manual und den
Ada95 Tutor verweisen.
Frank Ecke, April 26, 1999 franke@minet.uni-jena.de |
JFH Winkler 2019Apr02.