热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GNU、GPL和LGPL

文章标题:GNU、GPL和LGPL。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
    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
推荐阅读
  • mysql和php的关系理解(php技术和mysql怎么结合)
    本文目录一览:1、apachephpmysql他们是什么关系 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • ANSI
    ANSI是什么编码?用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII ... [详细]
  • 如何在Windows 10系统上成功安装Singular软件
    目录1.Singular2.使用Linux子系统2.1.使用命令行安装2.2.使用源码包安装3.使用Linux模拟器安装4.使用其他软件安装4.1.使用Sage安装1.Singul ... [详细]
  • Haskell学习笔记:探索函数式编程之美
    使用教材:《learnyouaHaskell》,中文1-8章戳我准备工作。编译器&调试器:安装HaskellPlatform, ... [详细]
  •  像Slashdot这样的论坛上常常有人在攻击GNU,他们的观点在我看来完全是缺乏历史知识和不尊重历史。当GNU倡导称Linux为GNU/Linux时,这些人声称GNU企图从Linus ... [详细]
  • 语  法:ls[-1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX][-I][-T][-w][--blo ... [详细]
  • 经过前面的一系列工作后,GO的语言环境已经搭建完成。我们也初步体验了GO提供的大部分命令。但在正式进入开发之前,还有件工作要做,那就是选择一款适合自己的IDE。为什么使用IDE“程 ... [详细]
  • shell学习文档
    2019独角兽企业重金招聘Python工程师标准为什么要进行shell编程在Linux系统中,虽然有各种各样的图形化接口工具,但是shell仍然是 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 【技术分享】如何通过恶意插件在Atom中植入后门
    【技术分享】如何通过恶意插件在Atom中植入后门 ... [详细]
  • 原文地址:https:www.lujun9972.winblog20210924如何更改url-package访问http时的user-agent-headerindex.html ... [详细]
  • Copyright(c)1985,1996,1998,2001,2002FreeSoftwareFoundation.Emacs指令通常包含有CONTROL键(有时候以CT ... [详细]
  • 1.首先要配置emacs文件:1(global-linum-modet)2(show-paren-modet)3(global-set-key(kbdC-s) ... [详细]
  • IPython 8.0 发布,Python 命令行交互工具
    IPython是Python的原生交互式shell的增强版,可以完成许多不同寻常的任务,比如帮助实现并行化计算;主要使用它提供的交互性帮助,比如代码着色、改进了的命令行回调、制表符完成、宏功能以及改进了的交互式 ... [详细]
author-avatar
xh7212176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有