Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
website
提交
daf87504
W
website
项目概览
openeuler
/
website
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
website
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
daf87504
编写于
8月 06, 2020
作者:
L
liuxuelan
提交者:
Gitee
8月 06, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add content/zh/blog/luoyuzhe/ 004History-of-Linux-kernel-3/004History-of-Linux-kernel-3 .md.
上级
351c636c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
62 addition
and
0 deletion
+62
-0
content/zh/blog/luoyuzhe/ 004History-of-Linux-kernel-3/004History-of-Linux-kernel-3 .md
...istory-of-Linux-kernel-3/004History-of-Linux-kernel-3 .md
+62
-0
未找到文件。
content/zh/blog/luoyuzhe/ 004History-of-Linux-kernel-3/004History-of-Linux-kernel-3 .md
0 → 100644
浏览文件 @
daf87504
+++
title="第二期Linux内核发展史-3"
date="2020-08-06"
tags=["Linux","内核","发展史"]
archives="2020-08"
author="罗宇哲"
summary="Linux内核发展史-3"
+++
_作者:罗宇哲,中国科学院软件研究所智能软件研究中心_
这一小节我们主要介绍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
[4] https://blog.csdn.net/xiaoxiao133/article/details/83049959
[5] https://www.runoob.com/note/13176
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录