我试图编译和运行以下程序没有 C
中的 main()
函数。我使用以下命令编译了我的程序。
gcc -nostartfiles nomain.c
编译器会给出警告
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340
好的,没有问题。然后,我运行可执行文件(a.out) ,两个 printf
语句都成功打印,然后得到 内存区段错误。
我的问题是 为什么在成功执行 print 语句后内存区段错误?
我的代码:
#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 标志阻止编译器在链接时使用标准启动文件