• 838阅读
  • 19回复

[讨论]关于Qt LGPL 开发静态链接的应用程序时,发布需要提供什么或注意什么呢? [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 2023-09-07
如题,关于Qt LGPL 开发静态链接的应用程序时,发布需要提供什么或注意什么呢?各位大佬,请问在公司里用Qt5开发静态链接的应用程序,该程序是免费提供给客户使用,在发布版本的时候需要注意什么?需要根据LGPL协议提供以下信息吗?
使用 LGPL 协议开发闭源程序,如果你使用动态链接的形式,那么,你可以以任何形式发布你的应用程序,商业的、非商业的、开源的、非开源的,随你。
如果你因某种原因必须静态链接一个基于 LGPL 协议发布的库(一下我们简称为 LGPL 库),那么,你有义务进行下面的工作:
你必须在你的文档中说明,你的程序中使用了 LGPL 库,并且说明这个库是基于 LGPL 发布的;
你必须在你的应用程序发布中包含一份 LGPL协议,通常就是那个文本文件
你必须开放使用了 LGPL 库代码的所有代码,例如某些封装器。但是,其他使用这些封装器的代码就不需要开放了;
你必须包含你的应用程序的余下部分的目标文件(通常就是我们所说的 .o 等等),或者是其他等价的文件。源代码并不是必须的。
不知道各位大佬,有谁比较清楚这方面的东西?欢迎各位大佬们指点迷津,小弟感激不尽,在线等!!!
离线dbzhang800

只看该作者 1楼 发表于: 2023-09-07
静态链接不了解。
其实,即使使用动态链接,也有不少注意事项。个人认为核心点是:你需要提供LGPL Qt库的源代码或提供让用户能够获取该源代码的方式。在商业程序中使用LGPL库时,不能限制用户对该库的修改和重新发布。

换句话说,
你需要声明你使用了LGPL版本的Qt,且提供对应的源代码,如果用户愿意修改源代码,你必须提供一种方式,来保证在你的程序中:用户可以使用他修改后的Qt,来取代你提供的Qt。

离线lwei24

只看该作者 2楼 发表于: 2023-09-07
回 dbzhang800 的帖子
dbzhang800:静态链接不了解。
其实,即使使用动态链接,也有不少注意事项。个人认为核心点是:你需要提供LGPL Qt库的源代码或提供让用户能够获取该源代码的方式。在商业程序中使用LGPL库时,不能限制用户对该库的修改和重新发布。
换句话说,
你需要声明你使用了LGPL版本的Qt,且提供对应的 .. (2023-09-07 09:41) 

哦哦,那请问如何判断自己开发的Qt 应用程序是GPL还是LGPL呢?因为我在安装Qt5.14的QCreator的时候,它并没有让选择协议,只是简单说了,当前是遵循GPL或LGPL。我查看了很多关于这方面的信息,很多人都说动态链接,不需要提供什么,随便任意免费试用。但是就是静态链接的Qt exe程序好像有限制,只是看到那些限制,我有点懵了,前两点提供说明LGPL协议,还好说明理解,但后面两点,总不能每次发版本,都把源代码h和目标文件等一起发给客户吧,人家客户又不需要这些,只需要exe程序。。。
离线dbzhang800

只看该作者 3楼 发表于: 2023-09-07
Qt中有的模块只有GPL没有LGPL,比uQtCharts,只要你用了,肯定是GPL了。
如果你的所有模块都同时有GPL和LGPL,那就看你自己声明了。

LGPL对动态链接和静态链接要求是一样的,只不过动态链接容易满足其要求罢了。

比如说:
1. 你需要提供对应的Qt源码。是指:即使Qt公司破产了,KDE基金会关门了,或者他们自己源码搞丢了。你仍然有给客户提供Qt对应源码的义务。
2. 保证用户有修改Qt源码的自由,修改后,可以用到你的程序中。(这点,动态库比较容易实现,静态库就很麻烦)
离线lwei24

只看该作者 4楼 发表于: 2023-09-07
回 dbzhang800 的帖子
dbzhang800:Qt中有的模块只有GPL没有LGPL,比uQtCharts,只要你用了,肯定是GPL了。
如果你的所有模块都同时有GPL和LGPL,那就看你自己声明了。
LGPL对动态链接和静态链接要求是一样的,只不过动态链接容易满足其要求罢了。
....... (2023-09-07 12:22) 

哦哦,多谢,有点复杂了。请问那工程目前只用到widgets模块呢?算GPL还是LGPL呢?动态链接形成的exe的确比较好发布,这个暂且不说,那静态链接会很麻烦,这个麻烦,到底应该怎么做呢?因为假设您是Qt开发设计者,开发出来的exe程序是通过静态链接的,那在您即将给客户发布您免费的软件时,也要提供这个软件的工程所有代码或目标文件吗?这样感觉有点麻烦,倒也不是不能提供,只是对于不懂代码的人来说,人家不需要这些,只需要工具……所以,想看看各位大佬们你们是怎么处理这种问题的?
离线20091001753

只看该作者 5楼 发表于: 2023-09-07
但问题是,正常来说,都是以动态链接的形式发布程序,即使是给客户(他人)用,也这样。

你为啥钟情于静态编译?
(づ ̄ 3 ̄)づ
离线lwei24

只看该作者 6楼 发表于: 2023-09-07
回 20091001753 的帖子
20091001753:但问题是,正常来说,都是以动态链接的形式发布程序,即使是给客户(他人)用,也这样。
你为啥钟情于静态编译? (2023-09-07 13:46) 

不是我钟情,是领导钟情。我只能按要求做,所以想请教看看你们在静态链接后形成的exe是如何发布给用户的。
离线20091001753

只看该作者 7楼 发表于: 2023-09-07


qt 在线安装器,有个步骤是选择所需的模块。
在选择时,界面右边能看到该模块的介绍信息,其中就包含了授权模式。
不同模块的授权模式会不一样,所以你可以通过这种方式再次确认一下。

同时你可以告诉领导,即使是购买了商业授权的公司,也通常是采用动态库的形式发布,例如WPS。
(づ ̄ 3 ̄)づ
离线lwei24

只看该作者 8楼 发表于: 2023-09-08
回 20091001753 的帖子
20091001753:[图片]
qt 在线安装器,有个步骤是选择所需的模块。
在选择时,界面右边能看到该模块的介绍信息,其中就包含了授权模式。
不同模块的授权模式会不一样,所以你可以通过这种方式再次确认一下。
....... (2023-09-07 15:42) 

哦哦,多谢,目前还用不到Qt6.感觉Qt6越来越臃肿,在笔记本安装Qt6,全选,直接占了120多GB。虽然您的建议很好,不过,动态链接会将dll暴露在外面,所以,领导不太愿意,只能暂时为了满足需求,静态链接了。估目前想看看大佬们你们如果碰到这种情况,是怎么发布的?
离线20091001753

只看该作者 9楼 发表于: 2023-09-08
全装当然大,只需装你所需的就好,也是同样,在线安装器能看到所选组件的占用空间大小。

而领导不愿意动态库暴露在外面,是不希望别人知道软件使用了 Qt ?

只要你是免费授权,原则上你需要显著地让用户知道使用了 Qt 库,例如在软件里,提供“关于 Qt”的按钮。

而且在免费授权下,静态编译必须公布源码;而动态编译可以不公布源码,甚至可以商用。

领导连动态库都想藏着,那估计源码就更不可能公布了。
(づ ̄ 3 ̄)づ
离线angelus

只看该作者 10楼 发表于: 2023-09-08
回 lwei24 的帖子
lwei24:哦哦,多谢,目前还用不到Qt6.感觉Qt6越来越臃肿,在笔记本安装Qt6,全选,直接占了120多GB。虽然您的建议很好,不过,动态链接会将dll暴露在外面,所以,领导不太愿意,只能暂时为了满足需求,静态链接了。估目前想看看大佬们你们如果碰到这种情况,是怎么发布的? (2023-09-08 09:03) 

什么需求会120G安装,我装了两个版本的Qt,一个最大也就5G,另一个3.2G,
离线lwei24

只看该作者 11楼 发表于: 2023-09-08
回 20091001753 的帖子
20091001753:全装当然大,只需装你所需的就好,也是同样,在线安装器能看到所选组件的占用空间大小。
而领导不愿意动态库暴露在外面,是不希望别人知道软件使用了 Qt ?
只要你是免费授权,原则上你需要显著地让用户知道使用了 Qt 库,例如在软件里,提供“关于 Qt”的按钮。
....... (2023-09-08 11:08) 

哦哦,倒不是不希望别人知道软件使用了Qt,假如是一个不懂代码的人,即使开放源代码,对于他们来说也不是很理解。换句话说,现在做软件,主要大部分是服务于别人,其他的都是多余的。
离线lwei24

只看该作者 12楼 发表于: 2023-09-08
回 angelus 的帖子
angelus:什么需求会120G安装,我装了两个版本的Qt,一个最大也就5G,另一个3.2G, (2023-09-08 15:32) 

不知道,应该是全选后,Qt6会把很多东西都下载下来,没想到它居然会占这么大。因此,我已经果断卸载,安装Qt5了,即使Qt5加上Qt源码,也才十几GB。
离线lwei24

只看该作者 13楼 发表于: 2023-09-08
回 angelus 的帖子
angelus:什么需求会120G安装,我装了两个版本的Qt,一个最大也就5G,另一个3.2G, (2023-09-08 15:32) 

不是需求会安装120GB,是因为想看看Qt6的新特性,结果,发现全选后,占了120GB太臃肿了。
离线clickto

只看该作者 14楼 发表于: 2023-09-08
回 lwei24 的帖子
lwei24:[表情]不是我钟情,是领导钟情。我只能按要求做,所以想请教看看你们在静态链接后形成的exe是如何发布给用户的。 (2023-09-07 14:09) 

要使用静态链接的话,最保险的是购买一份商业许可。
不过,多数使用Qt开发的软件都是采用动态链接的方式来的。
离线realfan

只看该作者 15楼 发表于: 2023-09-11
回 20091001753 的帖子
20091001753:
[图片]
qt 在线安装器,有个步骤是选择所需的模块。
在选择时,界面右边能看到该模块的介绍信息,其中就包含了授权模式。
不同模块的授权模式会不一样,所以你可以通过这种方式再次确认一下。
.......

wps用的是商业版吗?安装目录下,thirdpartylegalnotices.txt,有这么一段:
qt5

You can get the source code of qt5 from
https://code.qt.io/cgit/qt/qt5.git

Modified version:
https://github.com/kingsoft-wps/qt5

Licensed under LGPLv3.0

The Qt Toolkit is Copyright (C) 2015-2021 The Qt Company Ltd.
Contact: http://www.qt.io/licensing/

You may use, distribute and copy the Qt Toolkit under the terms of
GNU Lesser General Public License version 3, which is displayed below.
This license makes reference to the version 3 of the GNU General
Public License, which is displayed below.
离线lwei24

只看该作者 16楼 发表于: 2023-09-15
回 clickto 的帖子
clickto:要使用静态链接的话,最保险的是购买一份商业许可。
不过,多数使用Qt开发的软件都是采用动态链接的方式来的。 (2023-09-08 20:14) 

冒昧问一下,这商业许可大概多少钱?我们开发的软件又不做商业收费,只是免费给客户使用而已,这个也需要吗?虽然我也明白最保险是这样做,但很多老板不愿意这样……
离线lwei24

只看该作者 17楼 发表于: 2023-09-15
回 realfan 的帖子
realfan:wps用的是商业版吗?安装目录下,thirdpartylegalnotices.txt,有这么一段:
qt5
You can get the source code of qt5 from
....... (2023-09-11 17:19) 

哦哦,这个声明倒是很简单,关于动态链接不用担心,静态链接后,需要考虑的那些,比如发布版本还需要把源码附上等等,换句话说,我们只是软件的开发者,可以提供源码,但客户也未必需要。
离线clickto

只看该作者 18楼 发表于: 2023-09-18
回 lwei24 的帖子
lwei24:[表情]冒昧问一下,这商业许可大概多少钱?我们开发的软件又不做商业收费,只是免费给客户使用而已,这个也需要吗?虽然我也明白最保险是这样做,但很多老板不愿意这样…… (2023-09-15 09:20) 

费用不清楚,我们如果开发商业软件的话,会选择使用动态库形式,声明使用版本,然后放一份LGPL协议。
如果使用静态库的话,按协议你应该公开源码,不管直接客户是否需要。
静态链接使用Qt实在不是什么好选择。
实在不行的话,你把你的软件使用动态链接,然后使用molebox之类的软件打包一下也行啊
离线lwei24

只看该作者 19楼 发表于: 2023-09-25
回 clickto 的帖子
clickto:费用不清楚,我们如果开发商业软件的话,会选择使用动态库形式,声明使用版本,然后放一份LGPL协议。
如果使用静态库的话,按协议你应该公开源码,不管直接客户是否需要。
静态链接使用Qt实在不是什么好选择。
实在不行的话,你把你的软件使用动态链接,然后使用molebox之类的软 .. (2023-09-18 19:58) 

哦哦,请问按协议公开源码,那个协议老长了,请问能简单说说到底该怎么公开吗?说实话,静态链接的好处就是没有那么多dll暴露在外面。换句话说,如果您是软件使用者,肯定喜欢简单干净的软件,而不是一堆dll外加一个exe。除非您使用的是安装模式。
快速回复
限100 字节
 
上一个 下一个