关闭

GPL-LGPL-GFDL的关系

306人阅读 评论(0) 收藏 举报
何为GPL、LGPL 和 GFDL

前日关注KingStorm和OO的瓜葛的关系时有很多人问起什么是 GPL、LGPL 和 GFDL?它们和源代码以及商业销售之间的关系是什么?自己找了些资料,基本上可以比较简洁的回答这个问题。

GPL 是GNU General Public License(GNU 通用公共许可证)的缩写形式;LGPL 是GNU Lesser General Public License(GNU 宽通用公共许可证)的缩写形式,旧称 GNU Library General Public License (GNU 库通用公共许可证),在宽松程度上与 BSD、Apache、XFree86 许可证相似;GFDL 是GNU Free Documentation License(GNU 自由文档许可证)的缩写形式。它们是自由软件(Free Software)的通用版权认证协议,由自由软件基金会(FSF)制定和发布。

  • 基于 GPL 的软件允许商业化销售,但不允许封闭源代码。
  • 如果您对遵循 GPL 的软件进行任何改动和/或再次开发,则您的产品必须继承 GPL 协议,不允许封闭源代码。
  • 基于 LGPL 的软件也允许商业化销售,但不允许封闭源代码。
  • 如果您对遵循 LGPL 的软件进行任何改动和/或再次开发,则您的产品不必继承 LGPL 协议,同时允许封闭源代码

GNU LGPL(GNU 程序库公共许可证)的内容全部包括在命名为 COPYING.LIB 的文件中。如果安装了内核核的源程序,在任意一个源程序的目录下都可以找到 COPYING.LIB 文件的一个拷贝。

GPL 和软件是否免费无关,它主要目标是保证软件对所有的用户来说是自由的。GPL 通过如下途径实现这一目标:

  • 它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
  • 它提醒每个用户,对于该软件不提供任何形式的担保。
  • 如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
  • GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。

遵照 GPL 的软件并不是可以任意传播的,这些软件通常都有正式的版权,GPL在发布软件或者复制软件时声明限制条件。但是,从用户的角度考虑,这些根本不能算是限制条件,相反用户只会从中受益,因为用户可以确保获得源代码。

尽管 Linux 内核也属于 GPL 范畴,但 GPL 并不适用于通过系统调用而使用内核服务的应用程序,通常把这种应用程序看作是内核的正常使用。

假如准备以二进制的形式发布应用程序(像大多数商业软件那样),则必须确保自己的程序未使用 GPL 保护的任何软件。如果软件通过库函数调用而使用了别的软件,则不必受到这一限制。大多数函数库,受另一种 GNU 公共许可证,即 LGPL 的保护,将在下面介绍。

LGPL 允许在自己的应用程序中使用程序库,即使不公开自己的源代码。但是,LGPL 还规定,用户必须能够获得在应用程序中使用的程序库的源代码,并且允许用户对这些程序库进行修改。

大多数 Linux 程序库,包括 C 程序库(libc.a)都属于 LGPL 范畴。因此,如果在 Linux 环境下,使使用 GCC 编译器建立自己的应用程序,程序所链接的多数程序库是受 LGPL 保护的。如果想以二进制的形式发布自己的应用程序,则必须注意遵循 LGPL 有关规定。

遵循 LGPL 的一种方法是,随应用程序一起发布目标代码,以及可以将这些目标程序和受 LGPL 保护的、更新的 Linux 程序库链接起来的 makefile 文件。

遵循 LGPL 的比较好的一种方法是使用动态链接。使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体。通过动态链接,用户可以直接使用更新后的函数库,而不用对应用程序进行重新链接。

但我们必须当心个别属于 GPL 范畴的库和实用程序:篏NU dbm(即 gdbm)数据库类的程序库是非常著名的 GPL 库;GNU bison 分析器生成程序是另一个实用的 GPL 工具,如果使用 bison 生成代码,所得的代码也适用于 GPL。

在 GPL 的保护范围以外,也有 GNU dbm 和 GNU bison 的相应的替代程序。例如,对于数据库类的程序库库,可以使用 Berkeley 数据库 db 来替代 gdbm;对于分析器生成器,可以使用 yacc 来替代 bison。

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场