一、UNIX的相关标准简介
产生标准的原因:
- 为了使开发出来的应用程序在不加修改的情况下,能从一个系统移植到另一个系统,实现不同版本的相互兼容。
ANSI C/ISO
- ANSI C:目标是为各种操作系统上的C程序提供可移植性保证。该标准不仅定义了C编程语言的语法和语义,还定义了一个标准库.
POSIX:
基于现有的UNIX的实践经验,规范了操作系统的应用编程接口,目的是使应用程序源代码能够不加修改地移植到多种UNIX操作系统。
该标准最初由 IEEE 开发的标准族,部分已经被 ISO 接受为国际标准。该标准的具体内容 见 1.1.3。POSIX.1 和 POSIX.2 分别定义了 POSIX 兼容操作系统的 C 语言系统接口 以及 shell 和工具标准。这两个标准是通常提到的标准。
- POSIX:表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX 是为了读音更像 UNIX)。
SVID
SystemV接口描述(SVID)是描述AT&T公司UNIX SystemV操作系统的文档,是POSIX标准的扩展超集。
GNU C 函数库定义了大多数由 SVID 指定而未被 ISO C 和 POSIX 标准指定的函数。来自 System V 的支持函数包括进程间通信和共享内存、hsearch和drand48 函数族、fmtmsg 以及一些数学函数
XPG/X/Open
- X/Open可移植性指南,是比POSIX更为一般的标准
- XPG是UNIX操作系统必须满足的要求
POSIX版本 | 目标 |
---|---|
1003.1 | 库函数和系统调用标准 |
1003.2 | 命令工具标准 |
1003.3 | 测试方法标准 |
1003.4 | 实时标准 |
1003.5 | Ada语言相关标准 |
1003.6 | 安全标准 |
二、自由软件计划GNU
GNU的概述
- http://www.gnu.org/
- GNU的目的是开发一个自由的类UNIX的完整操作系统
- 自由软件的的含义是任何人可自由使用、学习、复制、修改、发布
GNU的特点
- 一个软件挂上了GPL版权宣告之后,他自然就成了自由软件,这个软件就具有底下的特色:
- 取得软件与原始码:你可以根据自己的需求来执行这个自由软件;
- 复制:你可以自由的复制该软件;
- 修改:你可以将取得的原始码进行程序修改工作,使之适合你的工作;
- 再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
- 回馈:你应该将你修改过的程序代码回馈于社群!
- 但请特别留意,你所修改的任何一个自由软件都不应该也不能这样:
- 修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权
- 单纯贩卖:你不能单纯的贩卖自由软件。
自由软件、开源软件、免费软件
开源软件是指在软件发行的时候,附上软件的源代码,并授权允许用户更改/自由再散布/衍生著作,开源并不抵制商业收费。
免费软件就是免费提供给用户使用的软件,但是其免费的时候,通常都会有其他的限制,比如其源码不一定会公开,而且使用者也并没有使用、复制、研究、修改和再散布的权利。
自由软件是一项思想运动,强调用户拥有如何使用软件的自由,这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。
开源软件和自由软件是有区别的,他们代表了两种不同的哲学理念,自由软件强调自由地“分享”与“协作”。开源软件则是从技术上的角度,为提高软件质量做的一种开发模式。