GPL/LGPL 和静态链接 [关闭]
Posted
技术标签:
【中文标题】GPL/LGPL 和静态链接 [关闭]【英文标题】:GPL/LGPL and Static Linking [closed] 【发布时间】:2012-04-25 04:28:57 【问题描述】:我在网上看到存在以下组合:
专有源代码 + GPL 源代码 -> GPL 源代码(所有代码必须在 GPL 下发布)
专有源代码 + LGPL 源代码 -> 专有源代码(所有代码保持专有)
现在如何静态/动态链接 GPL 和 LGPL 代码与上述组合?
【问题讨论】:
Propriety Source code + LGPL Source code -> Propriety Source code,这个不对,LGPL Source code 还是 LGPL。 我投票结束这个问题,因为它是关于许可或法律问题,而不是编程或软件开发。 See here 了解详情,help center 了解更多信息。 许可是软件开发的关键部分。考虑到代码的 GPL 和非 GPL 部分的静态和动态链接如何影响软件开发,从而在更大程度上影响编程,我不'不认为这是一个离题,因此我会要求重新考虑它以保持开放。 我想知道这应该迁移到opensource.stackexchange.com。但这对开发人员来说也确实很重要,因此不确定。 【参考方案1】:如果您想分发组合作品,您必须使用以下许可;
专有源代码 + GPL 源代码
静态或动态链接:You must release both parts as GPL。专有源代码 + LGPL 源代码
静态链接: you must release both parts as LGPL。 或provide everything that allow the user to relink the application with a different version of the LGPL source code。在这种情况下,其他要求与动态链接相同。 动态链接:LGPL code stays LGPL, you can keep the proprietary code proprietary。另见executing a (L)GPL program from proprietary Source code。
更新(2014 年 11 月):A Comprehensive Tutorial and Guide 包含对 (L)GPL 及其使用(包括分发)的清晰详细描述。我推荐它以获取更多详细信息。
【讨论】:
关于“你必须将两个部分都作为 LGPL 发布”部分:我认为不必是 LGPL。在任何许可证下发布的应用程序源代码都应该没问题,即使是禁止修改的许可证,只要它允许将未修改的应用程序源代码与 LGPL 库一起重新分发(因此可以重新编译)。 ...不过,我想“提供允许用户重新链接应用程序的所有内容”部分还包括提供 LGPL 以外的源代码,因此可以重新- 编译然后重新链接。 我很确定这条评论是绝对正确的。如果静态链接 LGPL 库,则应用程序本身必须是 LGPL。过去,我们已经让我们的律师对此进行了仔细检查。动态链接到 LGPL 库是避免成为 LGPL 的唯一方法。 在 apk(android 应用程序)中使用二进制(静态)或共享库有什么区别吗?在这两种情况下,用户都无法轻松替换 apk 中的库 @Stevan 您的评论直接与 LGPL 自己的官方常见问题解答相矛盾。现在由答案链接,并且答案也已使用该信息进行了更新:如果您静态链接,则不需要在 LGPL 下许可您的代码,只需提供 some 方式供用户更新库代码并重新链接您的可执行文件。这包括提供合适的未链接二进制文件,或在专有许可下提供您的源代码。 (我不确定您所说的“此评论”是什么评论 - 我想您可能指的是(当时)答案。)以上是关于GPL/LGPL 和静态链接 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
六种开源协议的比较(BSD, Apache, GPL, LGPL, MIT, MPL)
Delphi SQLite Wrapper 具有静态链接和加密支持