用LGPL Qt单EXE?

Pyt*_*Gem 11 qt lgpl

在分发程序时没有太多关于LGPL/GPL的知识(没有Qt许可证); 如果我创建了一个程序,我可以静态地将库链接到exe,所以我有一个文件在以下时分发:

  • 该程序不需要任何费用,它只是分发(闭源或开源)?

  • 当你必须支付该程序时,你仍然可以静态链接?

Kev*_*vin 28

实际上,只要满足一些非常具体的要求,LGPL就允许静态链接.例如,如果所有发布都是从您拥有StaticProgram.exe的网站完成的,那么只要用户也可以下载StaticProgram.objLGPL-library-source.tar.gz,您就可以了.您还可以使用书面报价分发StaticProgram.exe以提供其他文件.

具体来说,静态链接会创建一个可执行文件,它是LGPL代码的衍生产品,因此您必须遵守LGPL的第6部分:

6)作为上述章节的例外,您还可以将"使用图书馆的作品"与图书馆合并或链接,以制作包含图书馆部分内容的作品,并根据您选择的条款分发该作品,前提是条款允许修改客户自己使用的工作和反向工程以调试这些修改.

您必须在图书馆使用的每份工作副本中发出醒目的通知,并且本许可证涵盖图书馆及其使用.您必须提供此许可证的副本.如果执行期间的工作显示版权声明,则必须在其中包含库的版权声明,以及指导用户使用本许可证副本的参考.此外,您必须执行以下操作之一:

a)使用完整的相应机器可读源代码包括工作,包括工作中使用的任何更改(必须在上面的第1节和第2节下分发); 并且,如果作品是与库链接的可执行文件,具有完整的机器可读"使用库的工作",作为目标代码和/或源代码,以便用户可以修改库然后重新链接以生成修改后的可执行文件,包 (可以理解,更改库中定义文件内容的用户不一定能够重新编译应用程序以使用修改后的定义.)

b)使用合适的共享库机制链接库.一种合适的机制是(1)在运行时使用已存在于用户计算机系统上的库的副本,而不是将库函数复制到可执行文件中,以及(2)将使用库的修改版本正确操作,如果用户安装了一个,只要修改后的版本与使用该版本的版本的接口兼容即可.

c)附上有效期至少三年的书面报价,以向同一用户提供上述第6a小节中规定的材料,费用不超过执行此分配的费用.

d)如果通过提供从指定地点获取副本的方式进行作品的分发,则提供相同的访问权限,以便从同一地点复制上述指定的材料.e)确认用户已收到这些材料的副本,或者您已向该用户发送了副本.

对于可执行文件,"使用库的工作"的必需形式必须包括从中复制可执行文件所需的任何数据和实用程序.但是,作为一个特殊的例外,要分发的材料不需要包含正常分布的任何内容(以源代码或二进制形式),其中包含可执行文件所在的操作系统的主要组件(编译器,内核等) ,除非该组件本身伴随可执行文件.

可能会发生这种要求与通常不伴随操作系统的其他专有库的许可限制相矛盾的情况.这种矛盾意味着您不能在分发的可执行文件中同时使用它们和库.


Rol*_*ien 13

不,如果您的程序是封闭源代码并且您想要链接到Qt的LGPL版本,则必须使用动态链接.如果您想静态链接,那么您必须购买Qt的许可证.

要在闭源项目中使用LGPL代码,用户必须能够替换代码的lgpl部分.最简单,也是最常见的方法是将所有LGPL代码放在一个dll中,然后用户可以选择替换dll.

您还可以使用您的语言允许的任何技术手段来实现相同的目标.您可以分发目标文件,然后用户可以像其他评论者指出的那样重新链接,但我从未在实践中看到过这种情况.

无论您的产品是免费还是付费都无关紧要.您可以出售GPL/LGPL产品.

  • 如果您还分发对象代码,则可以使用静态链接. (5认同)
  • 阅读LGPL 2.1版第6节.这个答案是不正确的. (2认同)