`

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。
分享到:
评论

相关推荐

    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为它的开发库。

    linux gcc 编程必须

    它是一套 GNU编译器套装[1]以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。[1]  GCC 原名为 GNU C 语言编译器,因为它原本只能处理 ...

    gcc最新版下载

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

    嵌入式gcc跨平台编译器

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

    docker-sogo:SOGo 镜像的 Dockerfile。 不再维护,图片已过时

    SOGo 是在 GNU GPL/LGPL v2 及更高版本下发布的。 这个 Dockerfile 将 SOGo 打包为由 SOGo 的创建者 Inverse 打包的,以及 Apache 2 和 memcached。 这个 Docker 镜像有不同的风格,作为标签添加。 要检查特定风格...

    开源软件授权模式介紹

    一些开源协议的介绍 GPL,LGPL...等等

    视频音频编码分析软件MediaInfo0.7.7.6

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码,许可协议:GNU GPL/LGPL)。 MediaInfo可以获得多媒体文件的哪些信息? 内容信息:标题,作者,专辑名,音轨号,...

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

    C和C ++库以及GNU较宽松通用公共许可证下的C ++类的集合。 即使有较新的版本,此集合也包含GNU LGPL下的所有版本。

    Java Libraries (under GNU Lesser GPL)-开源

    GNU通用通用公共许可证下的Java库(包括Java类)的集合。 即使有较新的版本,此集合也包含GNU LGPL下的所有版本。

    gcc编译器下载-4.6.0-Windows版

    gcc编译器是一套以 GPL 及 LGPL许可证所发行的自由软件,适用于windows的各个操作系统。 【gcc编译器使用说明】 1、在gcc--4.9.1的平级目录建一个编译目录 2、配置 ../gcc-4.9.1/configure --prefix=/usr/local/gcc...

    AForge.NET

    Both licenses can be found in the gpl-3.0.txt and lgpl-3.0.txt files, or the next web pages: http://www.gnu.org/licenses/gpl.html http://www.gnu.org/licenses/lgpl.html Copyright ?AForge.NET, 2006-...

    AForge.NET Framework-2.2.5 Installer.rar

    Both licenses can be found in the gpl-3.0.txt and lgpl-3.0.txt files, or the next web pages: http://www.gnu.org/licenses/gpl.html http://www.gnu.org/licenses/lgpl.html Copyright ?AForge.NET, 2006-...

    linux管理的命令

    GCC是一个用于linux系统下编程的编辑器。GCC(GNU Compiler Collection,GNU编辑...它是一套以GPL 及LGPL许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X操作系统的标准编译器。

    ( AForge.NET Framework-2.2.5-(libs only). 5分

    Both licenses can be found in the gpl-3.0.txt and lgpl-3.0.txt files, or the next web pages: http://www.gnu.org/licenses/gpl.html http://www.gnu.org/licenses/lgpl.html Copyright ?AForge.NET, 2006-...

    最新版GCC编译器GCC4.0

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

    arm64位平台下gcc编译器

    英国ARM公司是全球领先的半导体知识产权(IP)提供商。...它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划 的关键部分,亦是自由的 类Unix 及苹果计算机 Mac OS X 操作系统的标准编译器。

    openpsa:OpenPSA是一个开源业务管理Web应用程序套件

    OpenPSA 1.x最初是由在GNU GPL许可下作为GNU GPL许可,以支持。 该程序包最初称为Nemein.Net。 当前活动的分支(OpenPSA 9)由开发并提供支持。 在了解更多信息设置您可以克隆此存储库,也可以将openpsa/midcom添加...

    js-bubbles:从 code.google.compjs-bubbles 自动导出

    JSBubbles 在 GNU Lesser GPL (LGPL) linse 下可用。 现在播放! 变更日志 2.1 改变了板子的外观(尤其是结果)[90%] 增加了在服务器上记住结果和统计信息的服务 [10% - 目前在 cookie 中](在 IE 和 Opera 中)...

Global site tag (gtag.js) - Google Analytics