当涉及到分发程序(没有Qt许可证)时,我对LGPL/GPL不太了解;如果我创建了一个程序,我是否可以静态地将库链接到exe,以便在以下情况下分发一个文件:
发布于 2010-02-16 23:33:41
不,如果您的程序是封闭源代码,并且您想要链接到LGPL版本的Qt,则必须使用动态链接。如果您想静态链接,那么您必须购买Qt的许可证。
要在封闭源项目中使用LGPL代码,用户必须能够替换代码的lgpl部分。要做到这一点,最简单也是最常见的方法是将所有LGPL代码放入dll中,然后用户可以根据需要替换dll。
您还可以使用您的语言所允许的任何技术手段来实现相同的目标。您可以分发对象文件,然后用户可以像其他评论者指出的那样重新链接,但我在实践中从未见过这样的情况。
不管你的产品是免费的还是付费的,都无所谓。您可以销售GPL/LGPL产品。
发布于 2010-02-16 23:56:17
实际上,LGPL允许静态链接,只要您满足一些非常具体的需求。例如,如果所有发行版都是从您拥有StaticProgram.exe,的网站上完成的,那么只要用户还可以下载StaticProgram.obj和LGPL-library-source.tar.gz.,就可以了您还可以以书面方式分发StaticProgram.exe,以提供其他文件。
具体来说,静态链接创建了一个派生于LGPL代码的可执行文件,因此您必须遵守LGPL第6节的规定:
(
6)作为上述章节的一个例外,您还可以将“使用库的工作”与“库”结合或链接,以生成包含库部分的作品,并根据您的选择分发该作品,条件是这些术语允许修改工作,供客户自己使用,并为调试这些修改进行逆向工程。
您必须在作品的每一份副本上发出突出的通知,说明在其中使用了该库,并且本许可证涵盖了该库及其使用。您必须提供本许可证的副本。如果执行期间的作品显示版权通知,则必须在其中包括库的版权通知,以及指示用户到本许可副本的引用。另外,你必须做以下一件事:
( a)为图书馆提供完整的相应机器可读的源代码,包括工作中使用的任何更改(必须根据上文第1节和第2节分发);如果工作是与图书馆链接的可执行文件,则附有完整的机器可读的“使用库的工作”,作为目标代码和/或源代码,以便用户可以修改库,然后再链接以生成包含修改后的库的修改后的可执行文件。(据了解,更改库中定义文件内容的用户不一定能够重新编译应用程序以使用修改的定义。)
( b)使用适当的共享图书馆机制与图书馆联系。一种合适的机制是:(1)在运行时使用用户计算机系统上已经存在的库的副本,而不是将库函数复制到可执行文件中;(2)如果用户安装了库的修改版本,则(2)将正确使用库的修改版本,只要修改后的版本是接口的--与工作使用的版本兼容。
( c)向同一用户提供至少三年有效的书面报盘,向同一用户提供上文第6a分节规定的材料,费用不超过进行这种分发的费用。
( d)如果作品的分发是通过提供从指定地点获取副本的途径,则提供同等权限从同一地点复制上述特定材料。( e)核实用户已收到这些材料的副本,或您已向该用户发送了一份副本。
对于可执行文件,所需的“使用库的工作”形式必须包括从它复制可执行文件所需的任何数据和实用程序。但是,作为一个特殊的例外,要分发的材料不需要包括任何正常分布的东西(无论是源的还是二进制的),其中包含运行可执行文件的操作系统的主要组件(编译器、内核等),除非该组件本身伴随着可执行文件。
可能会发生这样的情况,即这一要求与通常不伴随操作系统的其他专有库的许可限制相矛盾。这种矛盾意味着您不能在您分发的可执行文件中同时使用它们和库。
https://stackoverflow.com/questions/2277165
复制相似问题