我正在尝试使用以下命令在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.exe
与gcc.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
安装它。