Hallo und herzlich willkommen zur zweiten Tafelübung in der Systemprogrammierung.
Heute steht auf dem Plan euch auf die erste richtige Programmieraufgabe der LILU vorzubereiten.
Der erste Punkt, der hierbei auf dem Plan steht, ist euch überhaupt zu zeigen, wie man
ein Programm richtig übersetzen und ausführen kann.
Auch wenn ihr das in der ersten Beispielaufgabe der Code zwar schon gemacht habt, wollen
wir euch jetzt im Detail erklären, was die Kommandozeile, die ihr verwendet habt, eigentlich
bewirkt hat.
Beim letzten Mal habt ihr eine Kommandozeile gehabt, die ungefähr so aussieht, wie die
hier dargestellte.
Das heißt, ihr habt den GCC-Compiler aufgerufen, mit den Argumenten KleinO, den Namen der
Ausgabedatei und schließlich einer Eingabedatei.
Was der GCC-Compiler dann damit gemacht hat, ist, er hat die Datei, in diesem Fall TestC,
eingelesen, in ein ausführbares Programm übersetzt und die Ausgabe in die Datei Test übersetzt.
Zumindest in diesem Beispiel.
Wenn man das kompilierte Programm ausführen möchte, kann man das in diesem Beispiel ganz
einfach mit Test machen.
Dabei ist aber zu beachten, dass man hier den relativen Pfad der Datei angeben muss.
Das heißt, dass man hier Punkt Schrägstrich Test schreiben muss.
Oder man kann die Datei ausführen, indem man den absoluten Pfad angibt.
Man kann mit Optionen wie eben den BINNESDRICHTKLEINO den GCC-Compiler dabei beeinflussen, wie er
arbeitet.
Es gibt noch weitere Optionen, zum Beispiel BINNESDRICHTKLEING, mit dem man den GCC anweisen
kann, Debug-Informationen mit in die Ausgabedatei zu schreiben.
Debug-Information bedeutet, dass zu jeder ausführbaren Instruktion in der Ausgabedatei
ein Verweis zu der entsprechenden Zeile im Quelltext steht, sodass man später genau
nachvollziehen kann, welche Instruktion zu welcher Zeile im Quellcode gehört.
Außerdem gibt es noch die Option BINNESDRICHTKLEINC, mit der man den GCC anweisen kann, nicht gleich
ein ausführbares Programm zu erstellen, sondern nur die Eingabedatei in Maschinenbefehle zu
übersetzen.
Was anschließend noch fehlt und aus dem Maschinencode ein ausführbares Programm
zu machen, ist das sogenannte Linken.
Das bedeutet der Prozess, dass den einzelnen Instruktionen eine Adresse gegeben wird.
Außerdem fehlen noch die Verweise auf gegebenenfalls zusätzlich einbindende Bibliotheken.
Mit der Option BINNESDRICHTWALL kann man den GCC sagen, dass er möglichst viele Warnungen
für potenzielle Fehler ausgeben soll.
Das bedeutet, wenn der Compiler annimmt, dass der Programmierer einen Fehler gemacht hat,
würde er eine Warnung auf dem Bildschirm ausgeben, die erklärt, worin der Fehler
liegt.
Eine Warnung führt also zu einer Ausgabe am Bildschirm.
Mit der Option WERROR kann man alles noch ein bisschen verschärfen.
Hier weist man den GCC dazu an, dass wenn eine Warnung gedruckt werden soll, er den
Kompiliervorgang abbricht.
Das heißt, es wird keine Ausgabedatei erstellt.
Der Unterschied zwischen WALL und WERROR ist also, bei WALL werden nur Warnungen ausgegeben
und wenn man zusätzlich noch das Flag WERROR hinzugibt, bricht der Compiler ab, ohne eine
Ausgabedatei zu erstellen.
Während man sein eigenes Programm übersetzen möchte, werden einem oft Fehlermeldungen
vom Compiler an den Kopf geworfen, weil man irgendetwas falsch gemacht hat.
Diese Fehlermeldungen sind zum Teil etwas schwierig zu verstehen.
Deshalb wollen wir an dieser Stelle auf die gängigsten eingehen und euch zeigen, wie
Zugänglich über
Offener Zugang
Dauer
00:08:11 Min
Aufnahmedatum
2020-05-06
Hochgeladen am
2020-05-06 23:26:36
Sprache
de-DE