首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MinGw交叉编译

MinGw交叉编译
EN

Stack Overflow用户
提问于 2013-09-16 09:03:42
回答 2查看 667关注 0票数 3

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

代码语言:javascript
复制
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时,错误就消失了。

代码语言:javascript
复制
wine gcc.exe -shared x.c  -o x.exe -lws2_32

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

这个论点是怎么回事?

EN

回答 2

Stack Overflow用户

发布于 2013-09-16 11:03:31

-shared将从代码中创建共享对象,而不是可执行文件。

可执行文件需要一个主函数作为入口点,因此出现了undefined reference错误。可以将共享对象与其他对象链接,以生成可执行文件。

这里这里

票数 2
EN

Stack Overflow用户

发布于 2013-09-16 11:29:54

你的第一行实际上几乎是正确的。(博士告诉您,shared是用于创建共享对象、库,这是正确的。)

你必须加上:

代码语言:javascript
复制
wine gcc.exe -mwindows x.c  -o x.exe -lws2_32

-mwindows选项是告诉GCC,您希望链接是一个图形化的Windows程序,而不是控制台程序。当然,您的程序还必须包含main()或WinMain()函数,否则您将再次收到相同的错误消息。

顺便提一句,您可能想知道,您不必使用葡萄酒交叉编译明。Linux有混合交叉编译器。在Debian和Ubuntu上,您可以使用apt-get install mingw32安装它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18824138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档