认识GPL/LGPL

认识GPL/LGPLGNU 是 GNUisNotUnix 的递归缩写 GNU 包含 3 个协议条款 nbsp nbsp GPL GNU 通用公共许可证 GNUGeneralPu nbsp nbsp LGPL GNU 较宽松公共许可证 GNULesserGen 旧称 GNULibraryGe GNU 库通用公共许可

         GNU是“GNU is Not Unix”的递归缩写。
GNU 包含3个协议条款:
   GPL:GNU通用公共许可证(GNU General Public License)
   LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License) ,旧称 GNU Library General Public License (GNU 库通用公共许可证);
    GFDL :GNU自由文档许可证(GNU Free Documentation License )的缩写形式。

       GPL(General Public License)和LGPL( Lesser General Public License)是GNU的两种License。越来越多的自由软件(Free Software)使用GPL作为其授权声明,如果对GPL一点都不了解,有可能在使用自由软件时违反了GPL的授权。如果是个人或不正规的公司倒也无所谓,但如果是有规模的公司,恐怕会有被起诉的风险。这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。GPL通过如下途径实现这一目标:

1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接(源代码形式)。对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
所以后来GNU推出了LGPL许可。LGPL 是GPL的一个为主要为类库使用设计的开源协议,LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库,而不需要开源商业软件的源代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议(注解:采用LGPL的代码,一般情况就是一个第三方库,如果开发人员仅用了它的功能,而没有对库本身进行任何修改,那么开发人员也不必公布自己的商业源代码。但是开发人员修改了这个库的源代码,那么修改的这部分库的代码必须开源,并且遵循LGPL协议)。因 此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只要这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)

GPL/LGPL协议的最终目都是保护开发者的知识产权,避免他人直接利用开源的代码开发类似的产品。






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224751.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:13
下一篇 2026年3月17日 上午11:14


相关推荐

  • django的render函数_Django Unchained

    django的render函数_Django Unchainedreverse函数reverse函数的作用是用来进行URL反转的,接下来我们介绍reverse函数的几种用法之前我们都是通过url来访问视图函数。有时候我们知道这个视图函数,但是想反转回他的url

    2022年8月7日
    5
  • PyCharm激活码永久有效PyCharm2017.3.5激活码教程-持续更新,一步到位「建议收藏」

    PyCharm激活码永久有效PyCharm2017.3.5激活码教程-持续更新,一步到位「建议收藏」PyCharm激活码永久有效2017.3.5激活码教程-Windows版永久激活-持续更新,Idea激活码2017.3.5成功激活

    2022年6月19日
    28
  • 聚类系列-层次聚类(Hierarchical Clustering)

    聚类系列-层次聚类(Hierarchical Clustering)上篇 k means 算法却是一种方便好用的聚类算法 但是始终有 K 值选择和初始聚类中心点选择的问题 而这些问题也会影响聚类的效果 为了避免这些问题 我们可以选择另外一种比较实用的聚类算法 层次聚类算法 顾名思义 层次聚类就是一层一层的进行聚类 可以由上向下把大的类别 cluster 分割 叫作分裂法 也可以由下向上对小的类别进行聚合 叫作凝聚法 但是一般用的比较多的是由下向上的凝聚方法 本文会对分裂法

    2026年3月17日
    2
  • 硬件工程师成长之路(9)——检测标准

    硬件工程师成长之路(9)——检测标准系列文章目录1.元件基础2.电路设计3.PCB设计4.元件焊接6.程序设计文章目录前言一、防爆认证前言送给大学毕业后找不到奋斗方向的你(每周不定时更新)嵌入式系统设计师考试一、防爆认证详细资料………………

    2025年9月17日
    10
  • Set集合用法

    Set集合用法性质底层采用哈希表算法,无序不可重复数组去重publicstaticString[]removeRepeat(String[]array){ Set<String>set=newHashSet<>(); for(inti=0;i<array.length;i++){ set.add(array[i]);…

    2022年6月9日
    42
  • 用python打包exe应用程序-PyInstaller

    1、PyInstaller简介PyInstaller是一个跨平台的Python应用打包工具,支持Windows/Linux/MacOS三大主流平台,能够把Python脚本及其所在的…

    2022年4月6日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号