1005 - 1.1 Dynamische Speicherverwaltung: Übersetzen DEPRECATED [ID:15166]
50 von 111 angezeigt

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

Teil einer Videoserie :
Teil eines Kapitels:
DEPRECATED

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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen