静态链接Qt与开源版本

时间:2012-09-29 17:02:00

标签: qt licensing

我正在使用Qt开源版开发应用程序。由于我不想提供Microsoft Visual Visual C(++)可再发行组件,我想使用Qt的静态链接版本。 如果我想在我的应用程序中使用静态链接,我应该使用商业Qt许可证开发的Qt许可信息says,尽管当我使用configure -static命令构建静态Qt库时命令提示问我是否使用Qt的商业版或开源版。

那么有可能用开源版本构建Qt吗?我是否需要商业版才能使用静态链接?我不会出售该申请。

3 个答案:

答案 0 :(得分:25)

2016年4月编辑

实际上,我最近一直在深入了解LGPL,并询问了一些专家。事实证明,在封闭源应用程序中无法使用静态链接进行Qt更像是一种培养的传奇,与现实无关。

LGPL需要的是最终用户可以针对不同版本的库重新链接应用程序。使用动态链接是实现这一目标的一种方法,但您可以轻松地提供目标文件,这样您就不必打开源代码并且仍然满足LGPL要求。

在Qt网站上有2个法律常见问题解答,但它们都没有直接声明你不能这样做。正如没有说明你可以。但是,如果你这样做,至少有几个暗示模糊法律威胁的情况。我认为所有这些都有一个很好的解释 - 他们不能说如果不发表实际的谎言就不能做到这一点,这可能会对他们产生负面的法律影响,并且他们愿意不鼓励这样做而不是鼓励它,因为它有可能迫使更多的人购买商业许可证。

简而言之,是的,你可以,而且你肯定应该,因为最近Qt已成为一个活生生的部署地狱,加上静态版本中的Qt 5.7, QML文件整齐地隐藏在可执行文件中,而不是在文件系统上,任何人都可以篡改。请确保:

  • 您的Qt版本仅包含根据LGPL许可的模块,并且没有任何GPL
  • 你的应用程序的about部分提到它正在使用Qt并包含一个指向你可以下载应用程序目标文件的链接
  • 在您的应用程序中包含所有相应的许可证文件

最后,您的应用程序实际上必须是“可重新链接的”,也就是说,它必须能够使用提供必要功能的兼容库版本。这意味着,如果您在构建之前对Qt进行了修改,则必须以源代码的形式提供,但只能修改Qt,而不是应用程序的源代码。

更新

以下摘录自GNU FAQ

  

为了遵守LGPL(任何现存版本:v2,   v2.1或v3):

     

(1)如果您静态链接到LGPL库,您还必须在对象中提供您的应用程序(不一定是源代码)   格式,以便用户有机会修改库和   重新链接应用程序。

这说得很清楚。


旧的原始答案:


只要您的应用程序是开源的并且您提供源代码,就可以静态构建Qt。如果您想要关闭源代码,则需要昂贵的商业许可证,或者需要使用动态链接。

使用Qt的静态构建的BTW是相当不错的,对于Qt5,我得到大约7-8 MB的可执行文件,没有外部依赖性,这比20 + MB的额外dll要好得多,你需要附带一个动态链接的应用程序

有关详情,请参阅此视频:Making the correct license choice when developing with Qt

总而言之,可以做到吗? 100%是的。它应该完成吗?这取决于个人/测试/学习目的,它是100%好的,但是如果你计划分发生产级软件,无论是否商业,开源或不开源,你最好先咨询律师。整个主题是不必要的复杂,需要解释,以便与律师协商变得比昂贵的商业许可证更昂贵。

答案 1 :(得分:1)

答案是是的,如果您愿意开源应用程序。

根据Qt-Project对他们使用的许可证的解释,如果您动态链接到Qt库,您的应用程序可以是闭源的也可以是开源的。但是,如果您静态链接,则您的申请受LGPL条款的约束。

Qt Project使用的确切语言是:

  

如果是动态链接,可以(但不是强制性)保留   应用程序源代码专有,只要它是“使用的工作   图书馆“ - 通常通过图书馆的动态链接实现。   在库的静态链接的情况下,应用程序本身可以   不再是“使用图书馆的工作”,因此成为受制于   LGPL。建议动态链接或提供   LGPL下的用户应用程序源代码。

     

http://qt-project.org/legal.html

其他一些答案中提出的情况“根本不清楚”的建议完全是不真实的 - Qt项目试图清楚地知道在什么情况下允许使用LGPL许可证,静态链接是只要该应用程序也是LGPL,其中一个。


由于原始问题指定非商业(不一定是开源),因此提问者需要决定是否允许根据LGPL(或扩展的GPL)进行分发,因为上面的页面也说“LGPL可以转换为GNU通用公共许可证“)。

答案 2 :(得分:-1)

只要是一个封闭的源应用程序,您需要从Digia购买许可证,请参阅Qt: Making the right licensing decision