Я намагаюся скомпілювати та запустити наступну програму без main()
функції в C
. Я скомпілював свою програму, використовуючи наступну команду.
gcc -nostartfiles nomain.c
І компілятор дає попередження
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340
Без проблем. тоді я запустив виконуваний файл (a.out), обидва printf
оператори успішно надрукували, а потім отримали помилку сегментації .
Отже, моє запитання: Чому помилка сегментації після успішного виконання операторів друку?
мій код:
#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 заважає компілятору використовувати стандартні файли запуску під час зв’язування