什么叫做GNU
GNU就是GNU's Not Unix的缩写, GNU 的创始人Stallman 认为UNIX 虽然不是最
好的操作系统,但是至少不会太差,而他自信有能力把UNIX不足的地方加以改进,使它
成为一个优良的操作系统, 就是名为 GNU的一个同UNIX兼容的操作系统,并且开发这
个系统的目的就是为了让所有计算机用户都可以自由地获得这个系统。任何人都可以免费
地获得这个系统的源代码,并且可以相互自由拷贝。因而在使用GNU软件的时候我们可以
理直气壮地说我们使用的是正版软件。当然GNU也是有自己的版权声明(即GPL,见附
录A)的,就是它有名的Copyleft(相对于版权的英文Copyright),就是用户获得GNU
软件后可以自由使用和修改,但是用户在散布GNU软件时,必须让下一个用户有获得源代
码的权利并且必须告知他这一点。这一条看似古怪的规定是为了防止有些别有用心的人或
公司将GNU软件稍加修改就去申请版权,说成是自己的产品。其目的就是要让GNU永远
是免费和公开的。
GNU是谁发起的?GNU 是由自由软件基金会 (Free SoftwareFoundation,FSF)
的董事长Richard M.Stallman (RMS)于1984年发起的,如今已经有十几年的历史了。
Stallman本来是在美国麻省理工学院的人工智能实验室从事研究工作的研究员, 同时也是
世界上可数的几个顶尖程序员之一,他的最著名的作品也是GNU的第一个软件就是GNU
Emacs,UNIX平台上的一个编辑器。这个软件推出后受到广大UNIX用户 的热烈欢迎,
由于它同时提供源代码,大家都热心地替它排除错误,增加功能,它的功能越来越强大,
终于成为UNIX平台上最好的编辑器,上至CRAY超级计算机,下至最普遍的 PC机,从
DOS到Windows,从VMS到UNIX都可以使用这个Emacs。受到这个软件成功的鼓励,
Stallman成立了自由软件基金会,以推广GNU计划。 基金会成立之后,主要靠一些厂家
的捐献和出售GNU程序的使用手册,以及拷贝GNU软件的电脑磁带和光盘来维持,不过
许多硬件厂家开始基金会提供高性能的工作站,这其中包括HP和 SONY,AT&T这样的
国际性大公司。
GNU目前已经推出的软件主要由Emacs──功能强大的编辑环境,GCC──性能优
异的多平台的C,C++,Fortran编译器和其他40多种软件。其中GCC的成功为GNU带
来了前所未有的影响。GCC是一种可以在11种硬件平台上编译出可执行程序的超级编译
器,而且其执行效率更是惊人,与一般的编译器相比平均效率要高20%-30%。这使得很多
商业公司也采用GCC来开发软件,其中包括像HP公司这样的专业大公司。 而现在回到苹
果公司的前NeXT公司总裁斯蒂夫·乔布斯也对Stallman尊敬有加,因为NeXT公司的软
件都是用GCC开发的,在PC游戏中最好的3D射击游戏quake(由ID Software公司开发)
也是用GCC的DOS移植版本djgpp编写的。GCC是C,C++,Objective C(由NeXT公
司贡献)三者合一的编译器,它的编译原理同大多数编译器不一样,它先有一个前端处理
程序将C,C++,Ovjective C的语句转换成为一个类似于Lisp的内部语言--RTL,再
由一个后端处理程序将其优化后产生目的CPU可以执行的机器代码,因而对于每种新语言
来说,只要写好一个新的前端处理程序就可以立刻将此语言移植到GCC已经支持的不同硬
件平台上去,而且编译出来的就已经是经过优化的二进制代码。除了C系列以外,GCC还
有Fortran 77,ada9x,Pascal的前端处理程序。GCC的多平台的实现方法同JAVA的虚
拟机技术不太一样,因而其运行速度远非JAVA能望其项背。
GNU 开始的策略就是先开发UNIX 已经有的程序(因为计划中GNU将会是一个与
UNIX兼容的操作系统,而UNIX下的标准使用界面已经非常完善了,所以先依照这个标准
开发应用程序,将来GNU 自己的系统核心一出来,就立即可以使用所有先前开发的GNU
应用程序),因此会先有emacs,GCC 等工具软件开发出来。其中 GCC 更是GNU计划
自立更生的一个重要步骤(不需要依靠商业软件来产生/编译整个GNU系统),如今这套
程序开发工具已经很成熟了。下一步要做的就是开发GNU的核心--Hurd了,只要Hurd
一开发出来,GNU 就是一套能够自我开机,真正自给自足,完整的自由操作系统。Hurd
是基于Mach这个微内核(micro kernel)上的操作系统核心。 以后会使用尤他大学的Mach4
(一个更为方便和快速的微内核),由于Hurd基于Mach,所以只要Mach移植到什么机
器上,Hurd也立刻就是这种硬件平台的操作系统,就这一点而言,它是一种很前卫的操作
系统。
但是Linux 在短短的几年内崛起,也使用GNU 的版权声明,大有取代Hurd 之势。
在网络上甚至有不少人认为Hurd应该停止开发, 因为 Linux系统已经十分成熟,GNU
实际上可以使用Linux当作核心,也能构成一套完整的操作系统。甚至连自由软件基金会
的技术人员也承认,要是Linux早几年出现,也许就不用发展Hurd 了。但是 Linux 还是
晚了一步,Hurd 已经计划很久了,技术上有很多非常领先的地方,能够支持的硬件平台也
比Linux多,不完成就太可惜了。1994 年 11 月,Hurd 的第一个雏形已经发表; 1995 年
4 月,也发表了第二次snapshot。Hurd目前的版本是0.2,是1997年6月发布的,已经可
以独立安装与稳定运行了,GNU版本的Mach 目前的版本是1.1.3。与此同时,已经开发
出一个基于微内核的Linux版本了,目前有一个可以在HP-PA RISC机器上运行的Linux系
统。 实际上,自由软件基金会目前有一套以Linux 为核心的 GNU 系统计划。这个计划
就是自由软件基金会支持的Debian Linux。Debian Linux 是GNU软件与公共软件
(Public DomainSoftware )最彻底的结合,它是一套完全由GNU和公共软件配置起来的,
而且具有商业操作系统水平的操作系统。
(注一):POSIX(PortableOperating System Interface)标准操作系统界面。
(注二):按照编程人员的习惯,一个软件在第一次推出前的所有测试版本都不能称作1.0
版,只能叫作0.3,0.7,0.99版,其数目越接近1,就表明其越来越接近正式发布。
更多介绍请进wdlinux论坛
什么叫做GNU的更多相关文章
- 感悟 GNU C 以及将 Vim 打造成 C/C++ 的半自动化 IDE
C 语言在 Linux 系统中的重要性自然是无与伦比.不可替代,所以我写 Linux 江湖系列不可能不提 C 语言.C 语言是我的启蒙语言,感谢 C 语言带领我进入了程序世界.虽然现在不靠它吃饭,但是 ...
- 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码
不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解 GCC 生成 16 位实模式代码方法的朋友带到我的博客.先说一下背景,编写能在 x86 实模式下运行的 ...
- 在 Linux 中使用 Eclipse 和 Gnu Autotools 管理 C/C++ 项目
在我该系列的之前的所有随笔中,都是采用 Linux 发行版自带的包管理工具(如 apt-get.yum 等)进行软件的安装和卸载,从来没有向大家展示使用源代码自行编译安装软件的方法.但是长期混迹于 U ...
- GNU Readline 库及编程简介
用过 Bash 命令行的一定知道,Bash 有几个特性: TAB 键可以用来命令补全 ↑ 或 ↓ 键可以用来快速输入历史命令 还有一些交互式行编辑快捷键: C-A / C-E 将光标移到行首/行尾 C ...
- GNU Radio Radar Toolbox
GNU Radio Radar Toolbox Install guide Change to any folder in your home directory and enter followin ...
- gnu coreutils-8.25 for win32 static - Beta
gnu.win32-coreutils-8.25.7z 2.7 Mb bc-1.06.tar.gz coreutils-8.25.tar.xz diffutils-3.5.tar.xz gawk-4. ...
- window下搭建c开发环境(GNU环境的安装)
一.在windows平台上安装GNU环境 windows操作系统不自带GNU环境,如果需要开发跨平台的C语言程序,那么需要给windows安装GNU环境 windows下的两款GNU环境:MinGW和 ...
- GNU make使用变量⑤变量的引用、定义等
在 Makefile 中,变量是一个名字(像是 C 语言中的宏),代表一个文本字符串(变量的值).在 Makefile 的目标.依赖.命令中引用变量的地方,变量会被它的值所取代(与 C 语言中宏引用的 ...
- (转)完全用GNU/Linux工作 by 王珢
完全用GNU/Linux工作 王珢 (看完这篇博文,非常喜欢王珢的这篇博客,也我坚定了学gnu/linux的决心,并努力去按照国外的计算机思维模式去学习编程提高自己.看完这篇文章令我热血沸腾 ...
- Gnu/Linux的学习探索
1.Gnu/Linux是一个基于POSIX和UNIX的多用户多任务 支持多线程多CPU的类UNIX的操作系统. 继承了UNIX以网络为核心的设计思想 是性能稳定的多用户网络操作系统. 1991年10月 ...
随机推荐
- JavaScript中的事件冒泡?事件传播的解释
注:本文来源 可译网 事件冒泡是你在学习javaScript旅途中遇到的一个术语,它涉及到当一个元素被另一个元素嵌套时调用事件处理的顺序,并且两个元素注册了同一个事件(例如,点击事件). 但是事件冒 ...
- PHP实现的简单组词算法
?php //组词算法 function diyWords($arr,$m){ $result = array(); if ($m ==1){//只剩一个词时直接返回 return $arr; } i ...
- cf1061c 普通dp题
题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约 ...
- poj 3461 (模式串T在主串S中出现的次数)
求模式串在主串中出现的次数Sample Input 3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIANSample Output 130 #include <iost ...
- hdu 1072 有炸弹的迷宫 (DFS)
题意:在n×m的地图上,0表示墙,1表示空地,2表示人,3表示目的地,4表示有定时炸弹重启器.定时炸弹的时间是6,人走一步所需要的时间是1.每次可以上.下.左.右移动一格.当人走到4时如果炸弹的时间不 ...
- [转] 通过Ajax方式上传文件,使用FormData进行Ajax请求
通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...
- js的"|"
3|4 转换为二进制之后011|100 相加得到111=7 4|4 转换为二进制之后100 |100 相加得到1000=8 8|3 转换为二进制之后1000 |011 相加得到1011=11 以 ...
- zjoi2010基站选址
线段树优化dp 题解: 首先dp挺简单的 f[i,k]=f[j,k-1]+solve(i+1,j-1) 然后这个是可以n^2*k搞得 然后考虑这个solve(i+1,j-1) 当i延伸了一个位置的时候 ...
- BZOJ1073 [SCOI2007]kshort K短路,A*
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1073 题意概括 以距离为第一关键字,字典序为第二关键字,在所有的从S到T的路径中,选择不重复经过某 ...
- Python3.X 安装Scrapy
安装Scrapy有两种方法: 1.pip install Scrapy 这种方式按道理来说是最简洁最快速的,但是有的时候安装不成功,只能更换一种方式,下载源文件安装的方式,详见下面一步. 2.下载文件 ...