我试图在C
语言中编译和运行以下没有main()
函数的程序。我使用以下命令编译了我的程序。
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 标志防止编译器在链接时使用标准启动文件。
main
,而是WinMain
或wWinMain
。 - StoryTeller - Unslander Monicald
,它将是-e
选项,对于 Windows 的 MSVC 链接器,它将是/ENTRY
选项。 - Ruslan