什么库在gcc程序集输出中有__main函数引用

时间:2017-08-01 15:45:46

标签: c gcc mingw

使用MinGW编译空c程序时,程序集输出包含行

call __main

这是什么图书馆?我希望与msvcrt.dll链接起作用(使用ld进行链接),但事实并非如此,它必须在别处定义。

其他地方有很多相关/实际上相同的问题,但是没有一个(据我所知,现在已经搜索了一段时间)实际上包含了这个问题的答案,所以请在标记为重复之前仔细检查。

2 个答案:

答案 0 :(得分:2)

__main应该由MinGW编译器附带的libgcc库提供。

如果使用编译器驱动程序(即gcc命令行工具)链接程序,而不是直接调用ld,则应自动将此库添加到链接中。出于此原因以及其他几个原因,建议使用编译器驱动程序进行链接。

具体取决于您拥有的MinGW版本以及它嵌入的GCC版本,libgcc或其中的一部分可能是DLL,如果您要运送MinGW编译的可执行文件,则必须捆绑它。

答案 1 :(得分:0)

在我的 Windows 10 机器上,它位于 \Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\ libgcc.a 然后直接与可执行文件链接,因此您不必在软件中包含任何 DLL。