Webseiten-Werkzeuge


was_passiert_beim_compilieren_eines_c-programms

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.

was_passiert_beim_compilieren_eines_c-programms.txt · Zuletzt geändert: von frank