Ich versuche folgendes Programm ohne main()
Funktion in zu kompilieren und auszuführen C
. Ich habe mein Programm mit dem folgenden Befehl kompiliert.
gcc -nostartfiles nomain.c
Und der Compiler warnt
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340
OK, kein Problem. Dann habe ich eine ausführbare Datei (a.out) ausgeführt, beide printf
Anweisungen wurden erfolgreich gedruckt und erhalten dann einen Segmentierungsfehler .
Meine Frage lautet also: Warum Segmentierungsfehler nach erfolgreicher Ausführung von Druckanweisungen?
Mein Code:
#include <stdio.h>
void nomain()
{
printf("Hello World...\n");
printf("Successfully run without main...\n");
}
Ausgabe:
Hello World...
Successfully run without main...
Segmentation fault (core dumped)
Hinweis:
Hier -nostartfiles
verhindert das gcc-Flag, dass der Compiler beim Verknüpfen Standardstartdateien verwendet