可以开箱即用静态链接的 Qt 构建?

Posted

技术标签:

【中文标题】可以开箱即用静态链接的 Qt 构建?【英文标题】:Qt build that can link statically out of the box? 【发布时间】:2010-02-11 23:14:54 【问题描述】:

我使用 Qt 构建了一个小型应用程序。事实证明,为了能够静态链接,我需要从头开始重新配置和 Qt。我以前做过,我记得那是一个很长的过程。

那么有人知道提供开箱即用静态链接功能的 Qt SDK 安装程序吗?

【问题讨论】:

如果您需要相关答案,您可能需要提供架构/操作系统。 见***.com/questions/934950/… 还有***.com/questions/2277165/qt-single-exe-with-lgpl 【参考方案1】:

除了Martin Beckett's answer。

小心使用许可证!

如果您在 (L)GPL 许可条款下使用 Qt 并在 (L)GPL 下分发您自己的应用程序,那么一切正常。

当然如果你想制作专有软件的话,情况就复杂多了。非常粗略地说,最终用户应该能够(修改和)重新编译 Qt 并将您的应用程序与(修改和)重新编译版本的库一起使用。要通过静态链接实现这一点,而无需将源代码提供给最终用户,只需提供可链接的目标代码,以便他们可以重新链接到修改后的库。

另外,如果我没记错的话,如果您使用 LGPL Qt 并提供源代码,那么您不必为自己的代码使用 LGPL 许可证。您可以编写您自己的许可(如果您是律师=))并拒绝用户可以重新编译和重新链接之外的任何权利。

【讨论】:

正确 - 您可以使用 LGPL Qt 分发商业应用程序,您只需提供 QtXXX.dll 并将它们放在与您的应用程序相同的目录中。实际上,它并不比在 dll 中使用 MFC 更受限制【参考方案2】:

如果你想静态链接 Qt,你需要商业许可证 - 它带有静态库。

编辑 - 是的,可以说您可以为用户提供某种补丁工具,以允许他们将静态链接的 Qt 库切换到他们自己的版本并保留在 LGPL 中 - 但真的吗?

【讨论】:

您可以创建静态库并使用免费版本链接到它们 是的,我可以用锯掉的猎枪从银行获得非常好的贷款利率,但这不合法。 该死的。我不知道这个(关于静态链接 Qt)。【参考方案3】:

对于 Unix / Windows / Mac OS-x,只需添加 -static 选项进行配置即可:

-static .......... 创建和使用静态 Qt 库。

deployment page 链接到每个操作系统的详细信息。

【讨论】:

【参考方案4】:

关于使用 MS 和 gcc 工具集构建静态版 Qt 的非常详细的帖子可以在 here 找到。

【讨论】:

以上是关于可以开箱即用静态链接的 Qt 构建?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用静态链接构建 Qt 应用程序

Qt 非静态链接和 .pro 文件

与 Qt 项目的静态链接

QT静态库静态编译

Qt5 - Windows:不一致的 dll 链接错误和 dllimport 静态数据成员的定义不允许

NMAKE 静态链接错误