==================== Hello World (Teil 1) ==================== Ziele: - Umgang mit Compiler und Linker - Was passiert beim Ã?bersetzen eines C-Programmes? - Interner AST - Erzeugung von Assembler Code - Erzeugung von Maschinen Code - Linken mit System Bibliotheken Unser erstes C-Programm ======================= Traditionell beginnt man das Erlernen einer neuen Programmiersprache mit einem Programm das den Text `Hello world!` ausgibt. Source Code ----------- :import: session03/helloworld.c *--[BOX(title=Aufgabe)]-------------------------------------------------* | | | Diese Programm abtippen. In diesem Zuge sollt ihr auch euren | | Lieblingseditor richtig einrichten: | | - Eigentlich unsichtbare Zeichen wie Tabs sollen vom Editor | | angedeutet werden. | | - Ebenso Leerzeichen am Ende einer Zeile. | | | *-----------------------------------------------------------------------* Übersetzen ---------- Im Terminal wird mit *--[SHELL(path=session03,hostname=heim)]--------------------------------* | | | gcc -Wall helloworld.c | | | *-----------------------------------------------------------------------* ein ausführbares Programm `a.out` erzeugt. Welche einzelnen Schritte dabei intern durchgeführt werden sehen wir später. Folgende Option wurde benutzt: -Wall `-W` steht für `Warning`. Damit sollen alle Warnungen ausgegeben werden. Ausführen --------- Nun kann das erzeugte Programm ausgeführt werden: *--[SHELL(path=session03,hostname=heim)]--------------------------------* | | | ./a.out | | | *-----------------------------------------------------------------------* Damit ist der erste Schritt getan. *--[BOX(title=Aufgabe)]-------------------------------------------------* | | | - Wieso muss man (eventuell) `a.out` mit `./a.out` ausrufen und | | nicht einfach nur mit `a.out`? | | - Löscht im Source Code die Zeile mit `return 0`. | | - Übersetzt einmal mit `-Wall` und einmal ohne `-Wall`. | | - Fügt die Zeile wieder ein. | | - Ändert den Compiler Aufruf so, dass das ausführbare Programm | | `helloworld` heisst. | | - Führt das Programm aus. Gebt anschliessend im Terminal `echo $?` | | ein. Ändert im Source Code das Return Statement in `return 42`. | | Wiederholt das Spiel. | | | *-----------------------------------------------------------------------* :navigate: up -> doc:index next -> doc:session03/page02