`

GNU、GPL和LGPL

阅读更多
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。
分享到:
评论

相关推荐

    开源协议比较(BSD,Apache,GPL,LGPL,MIT)

    ### 开源协议比较:BSD, Apache...而GPL和LGPL许可证则强调软件的自由性和开放性,适用于那些希望维护社区共享精神的项目。理解这些许可证的区别,可以帮助开发者和企业做出更明智的选择,促进开源生态系统的健康发展。

    BSD-APACHE-GPL-LGPL-MIT.rar_mit gpl

    LGPL(GNU Lesser General Public License)是GPL的一个变种,适用于库和框架。LGPL允许动态链接到它的软件保持非GPL状态,这使得商业软件开发者可以在不公开源码的情况下使用LGPL库。然而,如果修改LGPL库本身,...

    五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍

    本文将深入探讨五种主要的开源协议:GPL、LGPL、BSD、MIT和Apache。 首先,GPL(GNU General Public License)是最具影响力的开源协议之一,它确保了软件的“copyleft”属性,即如果软件的任何部分被用于其他项目,...

    重要开源协议的比较(BSD,Apache,GPL,LGPL,MIT).pdf

    在众多开源协议中,有五种特别重要且被广泛使用的协议:BSD、Apache、GPL、LGPL和MIT。这五种协议各有其特点和适用范围,下面我将对它们逐一进行详细介绍。 首先,BSD协议(Berkeley Software Distribution License...

    GPL 2.0协议

    GPL 2.0协议带格式文本,估计做计算机的是绕不开该协议了,可以下载下来研究研究。

    Media Info Src

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (许可协议:GNU GPL/LGPL)。

    视频检测 MediaInfo

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码,许可协议:GNU GPL/LGPL)。 支持格式:视频:MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4...

    MediaInfo_DLL_19.04_GNU_FromSource.tar.bz2

    MediaInfo是一款非常实用的视频参数检测工具,除了可以对...MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码,许可协议:GNU GPL/LGPL)。MediaInfo_DLL为它的开发库。

    关于GNU的说明 希望有用

    - **定义与特点**:LGPL,又称为较宽松的GPL或次要GPL,它是GPL的一个变种,主要用于库文件和其他支持性软件。LGPL允许将库与专有软件一起链接使用,而不需要整个程序都遵循GPL的要求。 - **版本与更新**:LGPL最早...

    jackson-core-1gpl、jackson-mapper-lgpl-1.9.13jar包

    总的来说,"jackson-core-1gpl、jackson-mapper-lgpl-1.9.13.jar包"为Java开发提供了强大的JSON处理能力,遵循LGPL协议,允许自由使用和修改。这两个jar包的结合使用,可以满足大部分JSON序列化和反序列化的需求,...

    各种开源协议简析 GPL、BSD、MIT、Mozilla、Apache、LGPL1

    本文将分析几种常见的开源协议,包括GPL、BSD、MIT、Mozilla(MPL)、Apache 2.0和LGPL,帮助开发者理解它们的特点和适用场景。 首先,BSD开源协议赋予了使用者极高的自由度。它允许使用者自由地使用、修改源代码,...

    GNU计划简介 概述 含义

    除了GPL之外,GNU还推出了GNU宽通用公共许可证(GNU Lesser General Public License, LGPL),适用于库和开发工具,允许它们与其他非GPL软件链接,而不强制整个应用程序遵循GPL。此外,还有GNU自由文档许可证(GNU ...

    linux系统教程课后习题答案借鉴.pdf

    Linux系统是一种开源、免费的类UNIX操作系统,由全球众多程序员共同设计和开发,适用于各种硬件平台,包括Intel x86系列...而GNU项目和GPL/LGPL的出现,推动了自由软件的发展,保障了用户对软件的自由使用和修改权利。

    C语言资源大全之游戏编程

    * Darkplaces:一个Quake2引擎的修改版本,使用GNU GPL2.1协议。 * ioquake3:Quake3引擎的免费版本,使用GNU GPL2.1协议。 * Orx:一个便携、轻量级、插件化、数据驱动的2D游戏引擎,使用zlib协议。 * Quake2:...

    gcc最新版下载

    它是一套以GPL及LGPL许可证所发布的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。原名为GNU ...

    常用开源协议文本

    以下是对五个主要开源协议——LGPL、GPL、MIT、Apache 2.0和BSD的详细解读。 1. LGPL (GNU Lesser General Public License) LGPL,全称GNU较宽松公共许可证,主要用于库和框架。与GPL相比,LGPL允许非开源项目链接...

    C/C++ Libraries (under GNU Lesser GPL)-开源

    标题 "C/C++ Libraries (under GNU Lesser GPL)" 指的是一个开源的C和C++库集合,这些库遵循GNU Lesser General Public License(LGPL)。LGPL是一种自由软件许可证,它允许开发人员在非自由软件中使用这些库,只要...

    嵌入式gcc跨平台编译器

    它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划 的关键部分,亦是自由的 类Unix 及苹果计算机 Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。...

    C语言资源大全之框架.docx

    PBL基于GNU LGPL 2.1 及更高版本(库),GNU GPL 2.1 及更高版本(测试代码),免费使用。 qlibc – 简单且强大的 C 库 qlibc是一个简单且强大的 C 库,当我们想要小且轻的库时,可作为 Glib 的替代品。qlibc基于...

    ffmpeg库:ffmpeg-n5.1-latest-win64-gpl-shared-5.1

    这个压缩包"ffmpeg-n5.1-latest-win64-gpl-shared-5.1" 提供的是FFmpeg库的最新版本5.1,针对64位Windows操作系统,并且是基于GPL(GNU General Public License)许可的共享版本。下面我们将深入探讨FFmpeg库的关键...

Global site tag (gtag.js) - Google Analytics