在C中没有主程序。当然,C程序员以int main(int argc char * argv [])开头,但这只能起作用,因为有一个例程告诉编译器/ IDE首先运行名为main的函数。
但是,我似乎无法在MinGW中找到这个例行程序。它在哪里定义?我只是搜索,因为我想改变它(仅作为测试)并稍微玩一下。有人可以将我链接到MinGW文件夹中的正确文件吗?答案 0 :(得分:1)
ld
链接器将查找多个符号之一的匹配项,以用作链接PE文件时的入口点:
entry point subsystem
--------------------- --------------
NtProcessStartup native
WinMainCRTStartup Windows GUI
mainCRTStartup Windows CUI (console)
__PosixProcessStartup POSIX CUI
WinMainCRTStartup WinCE GUI
mainCRTStartup Xbox
mainCRTStartup other
DllMainCRTStartup@12 (or possibly DllMainCRTStartup) for DLLs
MinGW将有一个自动链接的目标文件,其中包含实际的PE入口点。 - 您可以使用gcc的-v
选项查看自动链接的对象文件。
在使用MinGW 4.6.1构建控制台子系统“hello world”程序的快速测试中,包含入口点的目标文件为crt2.o
,并且其符号mainCRTStartup
由链接器作为入口点。
包含入口点代码的源文件是crtexe.c
(或crtdll.c
)。
您可以使用链接的--entry
选项覆盖入口点(在gcc命令行中使用时为Wl,--entry=whatever
)。