gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:57:20 25 4
gpt4 key购买 nike

我正在开发一个小型项目(适用于 Windows)并且应该是可移植的。我在某个地方看到 MinGW 摆脱了目标系统上某些 .dll 的要求,所以我想我会试一试。令我吃惊的是,当我尝试在 friend 的计算机上运行我的程序时,出现两个错误,指出缺少 2 个不同的 .dll。我以为MinGW用的是系统dll,但显然不行。我看到一篇关于如何使用 Visual Studio 制作独立 exe 的文章,但我更喜欢使用 MinGW,因为它很简单。

所以我的问题是:如何使用 MinGW 生成独立的 exe?

注意:我只使用标准库,但如果知道如何为 future 的项目包含其他库会更好。

如果您想了解我所说的独立 exe 的示例,putty 就是一个很好的示例(它是 Windows 的 ssh 客户端)。

最佳答案

您需要的两个库很可能是 libgcc_s_sjlj-1.dlllibstdc++-6.dll 或者它们的一些变体,具体取决于您的 mingw 是如何配置的它被 build 了。这些是 C 和 C++ 标准库实现。

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

更多信息在这里:Mingw libgcc_s_sjlj-1.dll is missing

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

关于C++ - 如何使使用 MinGW 独立编译的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com