Während der Übersicht über Systemprogrammierung in der ersten Tafelübung kam es schon der
Punkt zur Sprache, dass wir von euch verlangen, portable Programme zu schreiben.
Jetzt wollen wir ein bisschen darauf eingehen, was überhaupt ein portables Programm ist.
Damit ein Programm portable ist, muss es sich an eine definierte Schnittstelle halten.
Das hat zur Folge, dass das Programm überall da ausgeführt werden kann, wo diese Schnittstelle
implementiert ist.
Die Schnittstellen, an die wir uns in Systemprogrammierung richten, sind auf der einen Seite die Programmiersprache
C selbst, und zwar in der Version C11.
Hier wird der Sprachumfang der Sprache C definiert, sowie eine Liste der Standardbibliotheksfunktion
definiert.
Dazu gehören zum Beispiel die Printf-Funktion oder malloc.
Und wir halten uns an die Single Unix Specification, die eine Schnittstelle des Betriebssystems
vorgibt.
Diese Schnittstelle wird zum Beispiel implementiert durch verschiedene Unixe, zum Beispiel Solaris,
aber auch andere Betriebssysteme, zum Beispiel Mac OS, die verschiedenen BSD-Derivate, aber
auch Linux.
Damit können die Programme, die ihr in der Systemprogrammierung schreibt, unter allen
zuvor genannten Betriebssystemen ausgeführt werden.
Was in der Auflösung gefehlt hat, ist das Betriebssystem Windows von Microsoft.
Unter Windows ist es schwieriger, für die Single Unix Specification zu programmieren
und die Programme zur Ausführung zu bringen.
Auf der einen Seite fehlt es an einem C11-Compiler, da der von Microsoft bereitgestellte Compiler
kein C11 kann, aber dem kann man sich abhelfen, indem man einfach den GCC unter Windows verwendet.
Die Single Unix Specification ist hier schon das größere Problem, da diese von Microsoft
Windows nicht unterstützt wird.
Um sich dazu zu behelfen, kann man jedoch die Unix-Kompatibilitätsschicht Cyquin verwenden,
die die Betriebssystemschnittstelle zu Unix nachimplementiert.
Generell ist aber zu empfehlen, für die Entwicklung ein Linux-Betriebssystem zu nutzen.
Recht neu seit Windows 10 ist auch die Möglichkeit, die WSL zu verwenden.
Damit kann unter Windows ein vollwertiges Linux verwendet werden.
Da wir am Lehrstuhl aber nur wenig Erfahrung mit der WSL haben, fordern wir weiterhin von
euch, dass die Zip-Rechner als Referenzsystem genutzt werden.
Das heißt, alle Programme, die ihr in SP schreibt, müssen auf den Zip-Rechnern auf der einen
Seite kompilieren, aber auch richtig ausführbar sein.
Damit stellt sich die Frage, wie wir überhaupt durchsetzen, dass diese Anforderungen gewährleistet
sind.
Wir fordern von euch, dass ihr C11-Programme schreibt und dass ihr die Single Unix Specification
beachtet.
Um dies sicherzustellen, müsst ihr beim Aufruf des Compilers folgende Optionen mit angeben,
die den Compiler dazu anweisen, genau diese Anforderungen auch durchzusetzen.
Das heißt, wir setzen einmal bindestrich std="c11", damit nur C11-konforme Programme erlaubt sind.
Und mit der Option dx-open-source kann durchgesetzt werden, dass alle Aufrufe ans Betriebssystem
der Single Unix Specification entsprechen.
Ergänzend dazu verwenden wir die vorhin schon angemerkten Optionen bindestrich w-all, damit
sämtliche Fehler hervorgehoben werden, und bindestrich w-error, damit diese zu einem
Programmabbruch führen.
An der Stelle sei noch angemerkt, dass es sehr wohl wichtig ist, die Option w-all für
Portabilität zu verwenden.
Denn wenn ihr die Warnings einschaltet, weist euch der Compiler darauf hin, wenn ihr undefiniertes
Verhalten in eurem Programm habt.
Zugänglich über
Offener Zugang
Dauer
00:04:36 Min
Aufnahmedatum
2020-05-06
Hochgeladen am
2020-05-07 00:16:40
Sprache
de-DE