====== Was passiert beim Übersetzen eines C-Programms ====== gcc -c hello.c Der leicht geänderte Aufruf zum Compilieren gcc -v hello.c erzeugt eine längere Bildschirmausgabe, welche mehrere Phasen des Compilierens anzeigt. Diese Phasen kann man sich einzeln anschauen: ====== a) Präprozessing: ====== Header Files (//*.h//) werden zum Quell-File hinzugefügt (+ Makrodefinitionen, bedingte Compilierung) gcc -E hello.c > hello.ii //hello.ii// kann mit einem Editor angesehen werden und ist ein langes C Quelltextfile. ====== b) Übersetzen in Assemblercode: ====== Hier wird ein Quelltextfile in der (prozessorspezifischen) Programmiersprache Assembler erzeugt. gcc -S hello.c Das entstandene File //hello.s// kann mit dem Editor angesehen werden. ====== c) Objektcode erzeugen: ====== Es wird ein File erzeugt, welches die direkten Steuerbefehle, d.h., Zahlen, für den Prozessor beinhaltet. gcc -c hello.c Das entstandene File //hello.o// kann nicht mehr im normalen Texteditor angesehen werden, sondern mit od -x hello.o ====== d) Linken: ====== Verbinden aller Objekt-Files und notwendigen Bibliotheken zum ausführbaren Programm //a.out//. gcc hello.o ====== e) Executable mit anderem Namen: ====== gcc -o hello hello.c Compiliert, linkt und erzeugt Executable mit Namen //hello//.