Я пытаюсь скомпилировать и запустить следующую программу без функции main()
в C
. Я скомпилировал свою программу, используя следующую команду.
gcc -nostartfiles nomain.c
И компилятор дает предупреждение
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340
Хорошо, проблем нет. то я запускаю исполняемый файл (a.out), оба оператора printf
печатаются успешно, а затем получают segmentation fault.
Итак, мой вопрос: Почему ошибка сегментации после успешного выполнения операторов печати?
мой код:
#include <stdio.h>
void nomain()
{
printf("Hello World...\n");
printf("Successfully run without main...\n");
}
выход:
Hello World...
Successfully run without main...
Segmentation fault (core dumped)
Примечание:
Здесь флаг -nostartfiles
gcc запрещает компилятору использовать стандартные файлы запуска при связывании