MinGw交叉编译

我正在尝试使用以下命令在Linux上编译一个windows .c文件:

wine gcc.exe xc -o x.exe -lws2_32 

我得到这个错误。

C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../ libmingw32.a(main.o):main.c 🙁 .text + 0x104):undefined参考“WinMain @ 16”

但是,将gcc.exegcc.exe属性一起使用时,错误消失了。

 wine gcc.exe -shared xc -o x.exe -lws2_32 

我试着查看gcc.exe的帮助页面,但找不到与“-shared”参数相关的任何内容

这个说法有什么作用?

-shared将从代码,而不是一个可执行文件共享对象。
一个可执行文件需要一个主函数作为入口点,因此你看到了undefined reference错误。 共享对象可以链接到其他对象来创建一个可执行文件。
看到这里或这里

你第一行其实是几乎正确的。 ( Doctorlove告诉你共享是用来制作共享对象的,这是真的。)

你必须添加:

 wine gcc.exe -mwindows xc -o x.exe -lws2_32 

-mwindows选项是告诉GCC你想链接一个图形化的Windows程序,而不是一个控制台程序。 当然,你的程序也必须包含一个main()或WinMain()函数,否则你将再次得到同样的错误信息。

作为一个方面说明,你可能想知道,你不需要使用wine来与Mingw进行交叉编译。 有用于Linux的mingw交叉编译器。 在Debian和Ubuntu上,用apt-get install mingw32安装它。