首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与开源版本的静态链接Qt

与开源版本的静态链接Qt
EN

Stack Overflow用户
提问于 2012-09-29 17:01:59
回答 2查看 13.9K关注 0票数 16

我正在用Qt开源版本开发一个应用程序。由于我不想交付Microsoft (++)可再发行版,所以我想使用静态链接的Qt版本。如果我想在应用程序中使用静态链接,那么我“应该”使用商业Qt许可证开发的Qt许可信息他说,尽管当我使用configure -static命令构建静态Qt库时,命令提示符会问我是使用商业版本还是开源版本的Qt。

那么用开源版本构建Qt是可能的吗?我需要商业版使用静态链接吗?我不会卖这份申请表的。

EN

回答 2

Stack Overflow用户

发布于 2013-03-10 13:21:15

2016年4月编辑

事实上,我最近已深入阅读了有关LGPL的资料,并询问了一些专家。事实证明,在封闭源代码应用程序中不能使用Qt的静态链接更像是一个有教养的传说,与现实无关。

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

在Qt网站上有两个合法的常见问题,而且在这两个问题中都没有直接说明你不能这样做。就像没人说你可以那样。然而,至少有几个例子暗示了一个模糊的法律威胁,以防你这样做。我认为对所有这些都有一个很好的解释--他们不能说,如果不公布一个实际的谎言,这可能会对他们产生负面的法律影响。他们愿意劝阻而不是鼓励这样做,因为这样做有可能迫使更多的人购买商业许可证。

因此,简单地说,是可以的,而且最明确的是应该是,因为最近Qt已经成为一个活生生的部署地狱,再加上在静态构建中QML 5.7,QML文件被整齐地放在可执行文件中,而不是放在文件系统上,任何人都可以篡改。只要确保:

  • 您的Qt构建只包含在LGPL许可下的模块,而不包含任何GPL。
  • 应用程序的“关于”部分提到它正在使用Qt,并包含一个指向可以下载应用程序对象文件的链接。
  • 在应用程序中包含所有相关的许可证文件。

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

更新:

以下是直接从GNU常见问题摘录的内容

为了遵守LGPL (任何现存版本: v2、v2.1或v3): (1)如果静态地链接到LGPL的库,还必须以对象(不一定是源)格式提供应用程序,这样用户就有机会修改库并重新链接应用程序。

上面写得很清楚。

原来的答案是:

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

顺便说一句,使用Qt的静态构建非常好,对于Qt5,我可以得到7到8MB的可执行文件,没有外部依赖,这比你必须随动态链接的应用程序附带的20+ MB好得多。

要获得更多信息,您可以查看以下视频:使用Qt开发时做出正确的许可选择

总之,能做到吗?百分之百是的。应该这么做吗?这取决于,出于个人/测试/学习的目的,它是100%的好,但是,如果你计划分发生产级软件,无论商业与否,开源与否,你最好先咨询律师。整个问题是不必要的复杂,需要解释,因此与律师的咨询比昂贵的商业执照更昂贵。

票数 35
EN

Stack Overflow用户

发布于 2015-02-27 18:26:49

答案是是的,如果您愿意开放您的应用程序.

根据Qt自己对他们使用的许可证的解释,如果您动态地链接到Qt库,那么您的应用程序既可以是封闭的,也可以是开放的。但是,如果静态链接,则应用程序受LGPL条款的约束。

Qt使用的确切语言如下:

在动态链接的情况下,只要是“使用库的工作”(通常通过库的动态链接实现),就可以保持应用程序源代码的专有性,但不是强制性的。在库的静态链接情况下,应用程序本身可能不再是“使用库的工作”,因而成为LGPL的对象。建议要么动态链接,要么在LGPL下向用户提供应用程序源代码。

https://web.archive.org/web/20140808121347/http://qt-project.org/legal.html

在其他一些回答中,认为情况“一点都不清楚”的说法是不真实的-- Qt Project试图非常清楚地知道在什么情况下允许使用LGPL许可证,只要应用程序也是LGPL,静态链接就是其中之一。

由于最初的问题指定了非商业性的(不一定是开源的),询问者将需要决定他们是否允许在LGPL下发布(或者通过扩展GPL,因为上面的页面还说"LGPL可以转换为GNU通用公共许可证“)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12654613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档