繁体   English   中英

C ++-如何使用MinGW独立编译的程序?

[英]C++ - How to make a program compiled with MinGW standalone?

我正在做一个很小的项目(适用于Windows),应该是可移植的。 我在某个地方看到MinGW摆脱了目标系统上某些.dll的要求,因此我想尝试一下。 令我惊讶的是,当我尝试在朋友的计算机上运行程序时,出现两个错误,提示缺少两个不同的.dll。 我以为MinGW使用了系统dll,但显然不起作用。 我看到了一篇有关如何使用Visual Studio制作独立exe的文章,但由于其简单性,我更喜欢使用MinGW。

所以我的问题是:如何用MinGW制作独立的exe?

注意:我仅使用标准库,但是很高兴知道如何为将来的项目包括其他库。

如果您想要一个独立exe的示例,那么腻子就是一个很好的示例(它是Windows的ssh客户端)。

您需要的两个库很可能是libgcc_s_sjlj-1.dlllibstdc++-6.dll或它们的一些变体,具体取决于构建时mingw的配置方式。 这些是C和C ++标准库的实现。

如果需要,可以在链接最终的可执行文件-static-libgcc-static-libstdc++时将额外的标志传递给编译器,这将导致它以静态方式链接这些库,而不要求您使用它们来分发DLL。您的可执行文件。

这里的更多信息: Mingw libgcc_s_sjlj-1.dll丢失

通常,您总是可以尝试将库静态链接到可执行文件中。 这些特殊的-static-libgcc标志是仅mingw提供的特殊标志,而不是其他编译器提供的特殊标志,并且不适用于其他库,对于其他库,您可以使用不同的-static语法。 静态链接很好,但是随着依赖关系变得越来越复杂,它会变得更加复杂且容易出错。 静态链接具有一些与库链接顺序相关的陷阱。 经过某一点之后,通常通常更容易使它们全部共享并且不执行任何静态链接。 这取决于您,这取决于项目的复杂程度/是否开始遇到问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM