快速业务通道

GNU、GPL和LGPL

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15
1.GNU 和 Linux 的关系

GNU项目(GNU Project)开始于1984年,是由自由软件基金(Free Software Foundation,FSF)资助的一个项目,目标是开发一个自由的、UNIX类型的操作系统,称为GNU系统.GNU是“GNUs Not UNIX”的首字母缩写,目前使用Linux内核的各种GNU操作系统应用非常广泛.

GNU项目已经开发了许多高质量的编程工具,包括emacs编辑器、GNU C 和C 编译器(GCC和G ),这些编译器可以在任何计算机系统上运行.所有的GNU软件和派生工作均遵循GNU通用公共许可证(GPL)的规定.Linux的开发使用了许多GNU工具.Linux系统上用于实现POSIX.2标准的工具几乎都是GNU项目开发的,Linux系统的许多内容也是GNU项目开发的,其中包括:

符合POSIX标准的操作系统shell和外围工具.

C语言编译器和其他软件开发工具及函数库.

X Window窗口系统.

各种应用软件,包括字处理软件、图像处理软件等.

各种Internet软件,包括FTP服务器、WWW服务器等.

关系数据库管理系统等.

2. GPL

GPL(General Public License,通用公共许可证)是一种软件许可证,其主要目标是保证软件对所有的用户来说是自由的,和软件是否免费无关.GPL通过如下途径实现这一目标:

它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户.

它提醒每个用户,对于该软件不提供任何形式的担保.

如果用户的软件使用了受GPL保护的任何软件的一部分,那么该软件就继承了GPL软件,并因此而成为GPL软件,也就是说随应用程序一起发布源代码.

GPL不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件.

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

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

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

Linux系统中关于GPL的声明保存在各目录下的名为COPYING的文件里,打开文件可查看GPL的内容.

3. LGPL

GNU LGPL(Library General Public License,程序库公共许可证)是一种关于函数库使用的许可证.LGPL允许用户在自己的应用程序中使用其他程序库,即使不公开自己程序的源代码也可以,但确保能够获得所使用的程序库的源代码,,LGPL还允许用户对这些程序库进行修改.

在Linux系统中,LGPL的内容保存在名为COPYING.LIB的文件中.如果安装了Linux内核的源程序,则在任意一个源程序目录下都可以找到COPYING.LIB文件的一个拷贝.

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

遵循LGPL的一种方法是,随应用程序一起发布目标代码以及可以将这些目标代码和受LGPL保护的程序库链接起来的makefile文件.在使用这类应用程序时,用户通过其他途径获得所需的程序库,然后根据makefile文件生成最终的可执行程序.

遵循LGPL的比较好的另一种方法是使用动态链接.使用动态链接时,应用程序在运行时调用函数库中的函数.应用程序本身和函数库是不同的实体,因而应用程序只需遵循动态链接库的使用方式,就可以像使用自己的函数一样使用函数库中的函数,,当函数库更新后,还可以直接使用更新后的函数库.在使用这类应用程序时,用户获得所需的程序库的动态链接库(如libc.a),然后直接运行应用程序即可.

注意,某些库和应用程序属于GPL而不是LGPL的范畴.例如,常用的GNU dbm(即 gdbm)数据库类的程序库就是非常着名的GPL库;GNU bison 分析器生成程序是另一个实用的GPL工具,因此,如果使用bison生成代码,所得的代码也适用于GPL.

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号