openEuler 内核系列 | Linux内核发展史 03

发布于 2022-8-2 17:40
浏览
0收藏

这一小节我们主要介绍 Linux 系统应用程序的主要来源—— GNU。

 

GNU

 

Linux 包含系统内核和提供系统服务和工具的应用程序两个部分。Linux 所使用的应用程序是由许多程序元编写并自由发布的。Linux 支持自由软件的概念,即软件本身不应受限,它们应遵守 GNU(GNU是GNU's Not UNIX的递归缩写)通用公共许可证(GPL)[1]。

 

软件通常是以源代码的形式发布的,但也可能需要支付一定的费用。这里提到的 GNU 项目最初是由自由软件基金会(Free Software Foundation)发起的,这个基金会的创始人是 Richard Stallman。

 

GNU 项目的宗旨是:试图创建一个与 UNIX 系统兼容,但并不受 UNIX 名字和源代码私有权限制的操作系统和开发环境。[1]因此 GNU 为软件社区贡献了许多 UNIX 系统上应用程序的仿制品,这些应用程序都遵循 GPL 许可证。

 

下面是在 GPL 条款下发布的一些主要的 GNU 项目软件[1]:

 

 •  GCC:GNU 编译器集,它包括 GNU C 编译器。
 •  G++:C++ 编译器,是 GCC 的一部分。
 •  GDB:源代码级的调试器。
 •  GNU make:UNIX make 命令的免费版本。
 •  Bison:与 UNIX yacc 兼容的语法分析程序生成器。
 •  bash:命令解释器(shell)。
 •  GNU Emacs:文本编辑器及环境。


许多其他的软件包也是在遵守自由软件的原则和 GPL 条款的情况下开发和发行的,包括电子表格、源代码控制工具、编译器和解释器、因特网工具、图形图像处理工具(如 Gimp),以及两个完整的基于对象的环境(GNOME 和 KDE)。

 

常见开源协议简介

 

木兰协议:木兰协议是我国首个开源协议,这一开源协议共有五个主要方面,涉及授予版权许可、授予专利许可、无商标许可、分发限制和免责申明与责任限制。

 

在版权许可方面,木兰协议允许“每个‘贡献者’根据’本许可证‘授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其‘贡献’,不论修改与否。

 

”木兰协议比 Apache License 更友好一些,Apache License 要求列出每个修改文件,其实很多项目做不到这一点,所以 MulanPSL 直接取消了这项要求[2]。

 

GPL协议:GPL 协议采取两种措施来保护程序员的权利:(1)给软件以版权保护;(2)给程序员提供许可证。它给程序员复制,发布和修改这些软件的法律许可。

 

在复制和发布方面,GPL 协议规定“只要你在每一副本上明显和恰当地出版版权声明和不承担担保声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。

 

你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定的费用。”[3] GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。

 

GPL 协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码) GPL 协议的产品,则该软件产品必须也采用  GPL 协议,既必须也是开源和免费[4]。

 

LGPL协议:LGPL 是一个为主要为类库使用设计的开源协议。和 GPL 要求任何使用/修改/衍生之 GPL 类库的的软件必须采用 GPL 协议不同,LGPL 允许商业软件通过类库引用(link)方式使用 LGPL 类库而不需要开源商业软件的代码。

 

这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改 LGPL 协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议[4]。

 

BSD 协议:BSD 开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

 

当你发布使用了 BSD  协议的代码,或者以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件:

 

1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。


2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD 协议。


3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

 

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议[5]。

 

总结

 

本小节中我们简要介绍了有关 Linux 应用程序的一个重要来源—— GNU。从下一小节开始我们将介绍 Linux 内核源码结构。

参考文献

[1] 《Linux程序设计(第四版)》

[2] https://iot.ofweek.com/2019-08/ART-132216-8120-30401877.html

[3] https://baike.baidu.com/item/GPL/2357903?fromtitle=GPL%E5%8D%8F%E8%AE%AE&fromid=8274607&fr=aladdin

 

 

文章转载自公众号:openEuler

分类
标签
已于2022-8-2 17:40:39修改
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐