【发布时间】:2017-06-27 12:55:39
【问题描述】:
每个人都知道!
我尝试在 Linux 上使用 MinGW 编译程序:
i686-w64-mingw32-g++ -static -mwindows ./obj/CFLF.o ./obj/resources.o -o ./bin/CFLF.exe
并捕获此输出:
./mingw-w64-crt/crt/crtexe.c:171: multiple definition of `WinMainCRTStartup'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/../../../../i686-w64-
mingw32/lib/../lib/crt2.o:./mingw-w64-crt/crt/crtexe.c:171: first
defined here
./obj/CFLF.o: In function `mainCRTStartup':
./mingw-w64-crt/crt/crtexe.c:199: multiple definition of `mainCRTStartup'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/../../../../i686-w64-
mingw32/lib/../lib/crt2.o:./mingw-w64-crt/crt/crtexe.c:199: first
defined here
./obj/CFLF.o:cygming-crtbegin.c:(.text+0x500): multiple definition of `__gcc_register_frame'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/crtbegin.o:cygming-crtbegin.c:
(.text+0x0): first defined here
./obj/CFLF.o:cygming-crtbegin.c:(.text+0x560): multiple definition of __gcc_deregister_frame'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/crtbegin.o:cygming-crtbegin.c:
(.text+0x60): first defined here
./obj/CFLF.o:crtexe.c:(.CRT+0x10): multiple definition of `mingw_pcinit'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/../../../../i686-w64-
mingw32/lib/../lib/crt2.o:./mingw-w64-crt/crt/crtexe.c:118: first
defined here
./obj/CFLF.o:crtexe.c:(.data+0x0): multiple definition of `__mingw_winmain_nShowCmd'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/../../../../i686-w64-
mingw32/lib/../lib/crt2.o:./mingw-w64-crt/crt/crtexe.c:118: first
defined here
./obj/CFLF.o:crtexe.c:(.CRT+0x4): multiple definition of `mingw_pcppinit'
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/../../../../i686-w64-
mingw32/lib/../lib/crt2.o:./mingw-w64-crt/crt/crtexe.c:118: first
defined here
/usr/lib/gcc/i686-w64-mingw32/6.2-win32/crtbegin.o:cygming-crtbegin.c:
(.text+0x22): undefined reference to `_Jv_RegisterClasses'
为什么?我的代码点是 WinMain,而不是 WinMainCRTStartup 或 mainCRTStartup。
我写link to code,因为它太大了(GitHub)。
P.S.:我在 Windows 上使用 MinGW 编译此代码,但没有出现此错误。 P.P.S.:为什么我不使用 Windows?仅用于基础教育。
【问题讨论】:
-
你是如何创建目标文件的?
-
看起来您正在尝试在 Linux 上编译 Windows 可执行文件。我不相信这会奏效。
-
@Nathan 通过正确设置交叉编译选项,它可能会运行良好。
-
@Magomed 欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里询问什么以及如何询问。
-
@NathanOliver,它没有编译,它交叉编译。我在linux上交叉编译了一些小程序,它们可以在Windows上运行。
标签: c++ linux compiler-errors mingw mingw-w64