GCC: Zwischenschritte speichern

Aus VGKB
Version vom 11. April 2019, 17:59 Uhr von Viktor (Diskussion | Beiträge) (Neu angelegt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Um während der Kompilierung in GCC die Zwischenschritte, d.h. die Ausgabe des Präprozessors, den Assembler-Code sowie die Object-Files, permanent (statt lediglich temporär) zu speichern, wird während des Kompilierungsvorgangs die Option -save-temps gesetzt. Die Kompilierung einer Datei "helloworld.c" würde dann folgendermaßen aussehen:

gcc -save-temps -o helloworld helloworld.c

Was bedeuten die Kommandos und Paramter im Befehl?

Es werden folgende Dateien hierbei erstellt (Kommando: ls -l --time-style '+'):

-rwxr-xr-x 1 user user 16576  helloworld
-rw-r--r-- 1 user user   101  helloworld.c
-rw-r--r-- 1 user user 15656  helloworld.i
-rw-r--r-- 1 user user  1528  helloworld.o
-rw-r--r-- 1 user user   451  helloworld.s

Folgende Dateien sind dabei von Bedeutung:

  • helloworld ist die ausführbare Datei
  • helloworld.c enthält den Source, der vom Entwickler geschrieben wurde
  • helloworld.i enthält die Ausgabe des Präprozessors, hier sind z.B. alle defines, includes, etc. bereits aufgelöst
  • helloworld.o ist die Objektdatei
  • helloworld.s enthält den Assembler-Code

Appendix

Folgender Code wurde für dieses Tutorial verwendet:

helloworld.c

#include <stdio.h>

int main()
{
        printf("Hello world!\n");

        return 0; /* return code: success */
}