我有一个使用g ++编译的.exe,它运行没有问题。但如果我想分发它,它将需要安装MinGW。有没有办法避免这种情况?
答案 0 :(得分:0)
我使用MinGW-64头文件和库在Linux下交叉编译Windows应用程序。我静态链接二进制文件,以便我不必将.exe文件以外的任何内容发送到Windows框。我使用基于clang / LLVM的工具链(http://ellcc.org)来进行构建而不是gcc,但是gcc应该能够做同样的事情。我已经使用这种技术来编译所有ELLCC工具(C / C ++编译器,binutils,gdb),并且它运行良好。
答案 1 :(得分:0)
是的,您可以使用mingw将代码编译为独立的.exe文件。 我这样做是在Linux上交叉编译c ++代码,然后在Windows计算机上运行它。
重点是,您必须静态链接。
-fPIC -static -static-libgcc -static-libstdc++
-lmylib
格式的命令的任何地方),请确保系统的库路径中存在相应的文件libmylib.lib
,并且该文件不是{ {1}}。您不能使用链接的dll编译独立代码。libmylib.dll
,则也可以重新分发它(与exe放在同一文件夹中),或者获取库的静态编译版本(这可能需要您自己编译库)。 。在linux上,有一些可用的mingw-packages静态版本。例如“ mingw32-LibRaw-static.noarch:MinGW Windows LibRaw库的静态版本” 有关g ++编译器和链接器选项的一些链接:
答案 2 :(得分:-1)
您的应用程序将在其他计算机上运行良好,无需安装MinGW;你需要的是从你的应用程序所依赖的MinGW编译器套件(可能是C ++库DLL,也可能是标准的C库DLL)中分发任何DLL。
请注意,这些DLL是根据GPL许可的,因此您的应用程序可能需要在兼容许可下获得许可; (IANAL,如果您计划商业发行,则需要寻求法律建议)。此外,您必须准备将GCC源(也可能是您自己的源)分发给可能会请求它的应用程序的任何用户。
答案 3 :(得分:-2)
我一直在寻找完全相同的解决方案。这是有效的:
要在Windows上运行可执行文件,您需要以下DLL:
在我的系统上,我在/usr/x86_64-w64-mingw32/sys-root/mingw/bin/
找到了它们。您的程序可能不需要所有。实验
以下部分不正确
对于MinGW licensing terms,似乎MinGW库是公共域或 MIT许可,这意味着重新分发这些库绝对没有问题DLL - 只有开发工具由GPL涵盖。
<强>更新强>
因此,DLL的重新分配并不是直截了当的。我相信,我提到的许可条款是MinGW本身。在任何情况下,您都可以使用这些库,但重新分发需要额外注意,除非您的软件是根据符合GPLv3 +资格条款的许可证发布的运行时异常子句。如果我发现更多,我会更新答案。