千家信息网

跟涛哥一起学嵌入式第07集:GNU/Linux和Linux有

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,GNU、GNU/Linux、Linux 之间到底是什么关系?什么是自由软件?什么是GPL协议?什么是自由软件基金会?什么是GNU耻辱榜?有多年开发经验的Linux工程师,估计也没怎么关注过这些问题。今
千家信息网最后更新 2025年01月24日跟涛哥一起学嵌入式第07集:GNU/Linux和Linux有

GNU、GNU/Linux、Linux 之间到底是什么关系?什么是自由软件?什么是GPL协议?什么是自由软件基金会?什么是GNU耻辱榜?有多年开发经验的Linux工程师,估计也没怎么关注过这些问题。今天就以自由软件发展的角度,给大家科普一下它们之间的关系。

1

什么是Windows?

想了解他们之间的关系,从Windows说起估计比较容易理解。Windows操作系统,大家都很熟悉:当微软发布OS新版本,你迫不及待地把它安装到你的电脑上,开机重启,你会发现,除了Windows操作系统,还有很多其它软件:office软件满足你的日常办公;Windows player可以听歌看电影;使用Visual studio软件,你可以开发桌面程序,发布自己的软件。也就是说,Windows发布的操作系统,不仅仅是一个操作系统,而是一个操作系统生态:开发者可以在这个平台上,使用微软提供的编译器工具、第三方开发工具,开发各种各样的软件:QQ、绝地求生、荒野行动、浏览器、网页、论坛.....,人们在这个平台上扮演着各种角色:使用者、开发者,一起维护和壮大这个生态。

2

什么是GNU?

GNU是一个操作系统,GNU是 "GNU's Not Unix" 的递归缩写 ,它的正确发音是:葛奴,而不是直接读G-N-U 或 new。GNU操作系统是一个类似Windows的自由软件操作系统,包括整个生态:操作系统内核、编译器、调试器等开发工具、办公软件、桌面游戏等自由软件。

3

GNU工程与自由软件

GNU工程发起于1984年,带头大哥是Richard Stallman, 就是写了Emacs、GNU C编译器、GNU C调试器的这位大名鼎鼎的×××。GNU工程的目标是:构建一个类似Unix的操作系统,包括内核、编译器、编辑器、电子表格、邮件软件、图形界面、应用库、游戏软件等。或者说,就是构建一个类似Windows生态的操作系统(当时Windows还没问世),方便计算机用户和开发者方便快乐地使用计算机。

GNU工程一个巨大的工程:开发一整套操作系统,包括内核、编译器、调试器、开发工具、应用软件等,绝非一个人或一个团队所能完成的,因此在1985年10月,成了了自由软件基金会(Free Software Foundation,FSF),它初期用来给GNU募集资金。

为什么要发起这个工程呢?很简单,因为当时计算机上的几乎所有软件都是专有软件(Proprietary software)。什么是专有软件呢?就是使用、修改、分发受到限制的软件,作者拥有这个软件的版权,不开源,只发布编译过的二进制版本的程序。一般商业公司比较支持专有软件。但是,对于行业发展来说,这不是个好事情,技术分享,互相迭×××发,才能更好地促进软件行业的成长。

与专有软件对应的是自由软件(free software),自由软件可以不受限制地自由使用、复制、研究、修改和分发。对,没有看错,就是这么自由!它要求是公开源码的,任何人都可以获得这份代码,可以修改,然后以其它版本再次发布、分发。这里需要注意的是,自由软件不等于免费软件(freeware),它也可以买卖,比如Linux操作系统光盘。这里的自由是权利问题,不是价格问题,自由软件有四项基本自由:

  • 使用自由:可以免费获取源码、使用

  • 学习自由:有权利研究如何运作、实现

  • 修改自由:可以改进该软件,发布改进

  • 发布自由:重新发布你修改的版本

GNU工程要求:GNU操作系统,包括内核在内的整套软件,都必须是由自由软件构成。

4

GNU 与 GNU Linux

GNU工程的目标,是构建一个包括内核在内的操作系统生态。在早期,在自由软件基金会的支持下,大多数自由软件项目都是以完成某项具体工作为目标。比如,Donald Knuth编写一个文本排版软件(TeX);Bob Scheifler开发一个窗口系统(X Window);Richard Stallman 开发了C编译器和调试器。 GNU工程也在开发一个操作系统内核,叫hurd,但是开发不是很顺利,后来Linus Torvalds编写一个类似Unix的内核(Linux) ,这样,整个操作系统的组件就齐全了,GNU/Linux操作系统就发布了。

Linux仅仅是一个内核,你可以从官网上下载这份源码;而GNU/Linux是一个操作系统,类似于Windows操作系统,包括Linux内核、编译器、编辑器、桌面系统、应用程序等整个生态。

我们讲过,GNU工程发布的GNU/Linux操作系统都是有自由软件构成的,所以任何人都有修改、分发的权利。所以,你也会看到GNU操作系统的分发版本:GNU/hurd,这有点类似于Windows操作系统的win7、XP、win10版本。

通过GNU工程发布的软件,一般会以GNU冠名。比如GCC,全名就是GNU Compiler Collection ,即GNU编译器套件;如果你开发一个chess的象棋游戏,通过GNU发布,这个软件就是:GNU Chess[官网];你编写一个连连看小游戏,如果通过GNU发布,这个软件名字就是:GNU 连连看。

5

自由软件基金会

自由软件基金会(FSF),由Richard Stallman建立。成立的初衷就是为开发GNU操作系统募集资金,它是一个美国民间的非盈利组织。在早期,FSF的基金主要用来雇佣程序员来开发自由软件。1990年以后,随着写自由软件的公司和个人越来越多,各种版权、法律、结构上的问题也越来越多。所以,现在自由软件基金的雇员和自愿者一般主要从事版权、法律相关的工作:比如GPL的施行,监督版权、GNU许可证等。当然,现在自由软件基金会也会开展跟多的自由软件项目,不仅仅是GNU工程,开发更多的自由软件,完善自由软件的理念。

6

什么是GPL?

GPL即GNU GPL,全称 GNU General Public License,翻译成中文就是:GNU通用公共许可证,GPL协议是干嘛用的呢?这个还得从自由软件说起。

通过上面的学习,我们知道,自由软件是开源的、可以任意修改和发布的。正是这一特性,自由软件再以一种不可思议的速度发展,自由软件不仅为成千上万的使用者、开发者提供了便利,也为很多商业软件公司提供了方便。自由软件是一座巨大的宝库,很多商业软件都是基于自由软件的基础上进行开发,节省了大量的人力、物力。有些自由软件,甚至比商业软件还好用,比如Linux、Git、ffmpeg、Libav、mplayer等。

按照自由软件的规则,你免费获取了自由软件的源码想,可以修改,可以发布。本着人人为我,我为人人的原则,你发布的软件也必须开源,供其他人学习、使用、修改。GPL协议就是用来维护这个规则的:开放软件的版权限制。你开发一个软件,使用了别人使用GPL协议发布的源码,那么,不好意思,你的软件也必须通过GPL协议发布,全部开放源码。

GPL这种自由开放的模式,对于技术分享、学习是个好事情,但是对于很多商业公司却很头疼。比如,一个公司,想基于自由软件FFmpeg解码库,开发一个"迷你影音"播放器,但是又不想把自己开发的源码、商业秘密分享出去,怎么办?没关系,除了GPL协议,还有其它协议,比如LGPL协议可以解决这个问题。

7

什么是LGPL协议?

LGPL是 GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写。GPL协议要求你的源码全部开放,这简直要了商业公司的命。LGPL协议可以解决这个问题,LGPL协议跟GPL协议基本上一样,只是缩小了你要公开源码的范围:缩小到动态链接库。比如,你想基于FFmpeg这个库开发一个影音播放器,如果你使用了基于GPL协议发布的FFmpeg解码库,不好意思,你要开放你的整个软件源码;如果你使用了基于LGPL协议发布的FFmpeg解码库,你在项目中,可以以库的形式来使用FFmpeg,但如果你对这个解码库进行修改,必须再次以LGPL协议发布,这些FFmpeg源码最后以库的形式被应用在你的商业项目中。对于你软件中的其它源码,那是你的商业秘密,不用公开。

从上可以看到,无论是GPL,还是LGPL,都是自由软件开发者和商业软件开发者之间的一个博弈。如果所有的自由软件都以GPL协议发布,那商业公司就用不了了,自由软件的价值也大打折扣;而通过LGPL协议发布,一方面可以促进自由软件的发展,另一方面,也可以和商业软件共存。

8

什么是GNU耻辱柱?

自由软件是个巨大的宝库,很多自由软件甚至比商业软件还优秀、还有用。这也吸引了大量的商业软件公司,喜欢从这个巨大宝库中,挑挑拣拣,找出自己喜欢的自由软件,修修改改,加以包装,就以商业软件的形式出售盈利了。

无论是GPL协议,还是LGPL协议,虽然它制定了自由软件的发布规则,但GNU毕竟是一个民间组织,跟那些商业巨头、商业流氓相比,人微言轻,有时候打官司也打不过,没办法,只能使用阿Q精神精神胜利法:我奈何不了你,我要让你上耻辱榜,公开羞辱你们,看你害燥不害燥!

比如自由软件FFmpeg,很多播放器都是基于此进行二次开发,但是当作商业软件使用,违反了自由软件的协议。在FFmpeg官网上,有一个耻辱软件榜,很多违反自由软件协议的商业软件都被列在了这里,包括韩国赫赫有名的播放器KMPlayer以及知名的一些播放器等,有兴趣可以自己搜,很多软件都被钉在了这个耻辱柱上。特定到官网上去看看,发现很多都被撤下来了,一直在待更新状态....,但是在FFmpeg的GitHub上有备份:FFmpeg耻辱柱

除了GPL协议、LGPL协议,还有其它各种协议,比如Apache、BSD、Mozilla等,除此之外,还有各种开源软件、共享软件、绿色软件、免费软件等,大家如果有兴趣,可以自己了解下。

嵌入式学习QQ群:3284757626微信公众号:宅学部落

王老师的51CTO学院课程视频:51CTO学院-王利涛-嵌入式视频教程

王老师的淘宝店:wanglitao.taobao.com

软件 自由 开发 系统 操作系统 商业 工程 源码 就是 内核 编译 公司 基金 编译器 商业软件 基金会 开发者 生态 耻辱 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全区域保护政策 军职教育网络技术与应用答案 网络技术公司人员介绍 sql数据库排名 平安科技网络安全怎么样 方舟端游加入服务器连接超时 软件工程学涉及软件开发技术 邮箱数据库插入表格 达梦数据库用什么版本的sql 网络安全程序员必备书 服务器并发量测试工具 DAKI是哪个数据库的英文简称 干软件开发压力大吗 软件开发接单公司电话 网络安全主题手抄报句子 阿里云数据库可以搬迁吗 软件开发刚毕业什么都不会在哪学 日产逍客音乐找不到服务器 电脑自学编程软件开发 公安网网络安全隐患排查 用友u10数据库表名 河北共筑网络安全防线 数据库安全运维管理岗位 有哪些内置数据库 怎么认定是软件开发服务 服务器安全方面的设置 赌博棋牌软件开发成本 无代码应用服务器搭建 数据库单价用什么字符 消防站网络安全核查情况报告
0