我试图使用以下命令在linux上编译一个windows .c文件:
wine gcc.exe x.c -o x.exe -lws2_32我得到了这个错误。
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.text+0x104):未定义的对‘`WinMain@16’的引用
但是,当使用带有gcc.exe属性的-shared时,错误就消失了。
wine gcc.exe -shared x.c -o x.exe -lws2_32我试着查看gcc.exe的帮助页面,但是找不到任何与"-shared“参数有关的内容。
这个论点是怎么回事?
发布于 2013-09-16 11:03:31
-shared将从代码中创建共享对象,而不是可执行文件。
可执行文件需要一个主函数作为入口点,因此出现了undefined reference错误。可以将共享对象与其他对象链接,以生成可执行文件。
见这里或这里
发布于 2013-09-16 11:29:54
你的第一行实际上几乎是正确的。(博士告诉您,shared是用于创建共享对象、库,这是正确的。)
你必须加上:
wine gcc.exe -mwindows x.c -o x.exe -lws2_32-mwindows选项是告诉GCC,您希望链接是一个图形化的Windows程序,而不是控制台程序。当然,您的程序还必须包含main()或WinMain()函数,否则您将再次收到相同的错误消息。
顺便提一句,您可能想知道,您不必使用葡萄酒交叉编译明。Linux有混合交叉编译器。在Debian和Ubuntu上,您可以使用apt-get install mingw32安装它。
https://stackoverflow.com/questions/18824138
复制相似问题