0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GNU/Linux和Linux的区别在哪?

汽车电子技术 来源:宅学部落 作者: 王利涛 2023-02-17 09:36 次阅读

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的自由软件操作系统,包括整个生态:操作系统内核、编译器、调试器等开发工具、办公软件、桌面游戏等自由软件。

3GNU工程与自由软件

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操作系统,包括内核在内的整套软件,都必须是由自由软件构成。

4GNU 与 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等,除此之外,还有各种开源软件、共享软件、绿色软件、免费软件等,大家如果有兴趣,可以自己了解下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206734
  • GNU
    GNU
    +关注

    关注

    0

    文章

    141

    浏览量

    17333
  • gpl
    gpl
    +关注

    关注

    0

    文章

    26

    浏览量

    2125
收藏 人收藏

    评论

    相关推荐

    Linux系统争议——是Linux还是GNU/Linux?

    操作系统。在这类系统中,用于计算机资源分配和硬件管理的程序称为“内核”。虽然GNU工程有官方内核程序Hurd,但是目前GNU系统所用的典型内核是Linux。因此就把这样的组合叫做GNU
    发表于 06-12 17:17

    JTAG和SWD的区别在哪

    JTAG和SWD的区别在哪?USART和UART的区别在哪
    发表于 10-08 09:01

    Linux与windows的区别在哪

    、与windows区别Linux不像windows有盘符的概念,只有一个根目录概念,所有文件系统(硬盘、U盘、CDROM、网络文件系统)都以一个子目录挂根目录下某一子目录下。在Linux下,“一切皆文件”。...
    发表于 11-04 07:50

    sizeof和strlen函数的区别在哪

    野指针是指指针指向的位置是不可知的,主要成因是什么?sizeof和strlen函数的区别在哪?链表和数组的区别在哪
    发表于 12-24 07:19

    单片机和Linux区别在哪

    单片机和Linux区别在哪呢?在硬件操作上单片机和Linux是类似的吗?
    发表于 01-19 06:04

    单片机和Linux区别在哪

    第1章 单片机和Linux区别1.1.有哪些产品使用单片机或Linux?所有的电子产品,所用技术都可以认为要么是单片机,要么是Linux;GUI方面主要是QT/Android,它们都
    发表于 01-26 06:00

    LINUX使用教程-chm

    GNU通用公共许可证Linux安装的几点经验linux文件系统Linux系统安装前的准备工作Linux与其他操作系统的
    发表于 01-18 09:54 349次下载
    <b class='flag-5'>LINUX</b>使用教程-chm

    RTK和GPS定位的区别在哪里?

    RTK和GPS定位的区别在哪里?
    发表于 05-08 10:08 76次下载

    linux查看端口被进程占用的方法 Linux与windows的区别

    Linux的全称为GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发
    的头像 发表于 08-22 14:23 2093次阅读

    嵌入式linux和桌面linux区别

    嵌入式linux和桌面linux区别主要区别是:1. 硬件平台:嵌入式Linux一般是Mips, ARM平台, 桌面
    发表于 10-20 15:36 4次下载
    嵌入式<b class='flag-5'>linux</b>和桌面<b class='flag-5'>linux</b>的<b class='flag-5'>区别</b>

    串口屏和并口屏的区别在哪

    串口屏还是并口屏好用?区别在哪里?
    的头像 发表于 01-23 09:53 8317次阅读

    unix和linux区别在哪

    虽然Linux的主导地位可能会让我们忽略Linux与这些操作系统的不同,但我们还是应该有一定的了解。在本文中,我将列出一些比较明显的差异。
    发表于 01-29 11:56 493次阅读

    揭秘GNU/Linux:为什么几乎没人敢这么称呼它?

    你对Linux感兴趣并读了一些博文。在其中,你遇到了一个有趣的名字:GNU/Linux。这些字母代表着什么意思,为什么人们总是将它们与Linux联系在一起呢?
    发表于 06-06 14:18 341次阅读
    揭秘<b class='flag-5'>GNU</b>/<b class='flag-5'>Linux</b>:为什么几乎没人敢这么称呼它?

    什么是 GNU/Linux

    Linus本人曾经争辩说,将Linux称为GNU/Linux简直是荒谬的。
    发表于 06-13 09:14 2631次阅读
    什么是 <b class='flag-5'>GNU</b>/<b class='flag-5'>Linux</b>?

    梯形丝杆和滚珠丝杆的区别在哪里?

    梯形丝杆和滚珠丝杆的区别在哪里?
    的头像 发表于 03-28 17:48 1328次阅读
    梯形丝杆和滚珠丝杆的<b class='flag-5'>区别在哪</b>里?