GNU(GNU’s Not Unix)是一个由**自由软件基金会(FSF, Free Software Foundation)发起的项目,目标是创建一个完全自由的操作系统。GNU 项目由理查德·斯托曼(Richard Stallman)**于 1983 年发起,旨在提供一个类 Unix 的操作系统,但完全由自由软件组成。
GNU 的名字是一个递归缩写,意思是“GNU’s Not Unix”(GNU 不是 Unix),表达了 GNU 的目标是创建一个与 Unix 兼容但独立的系统。
GNU 的核心目标
- 自由软件:
- GNU 项目强调软件的自由性,用户有权利运行、复制、分发、研究、修改和改进软件。
- 自由软件的四大自由:
- 自由 0:自由运行程序。
- 自由 1:自由研究和修改程序。
- 自由 2:自由分发程序。
- 自由 3:自由分发修改后的程序。
- 类 Unix 系统:
- GNU 的目标是创建一个与 Unix 兼容的操作系统,但完全由自由软件组成。
- GNU 工具链:
- GNU 项目开发了大量的工具和库,如 GCC(GNU Compiler Collection)、GNU Make、GNU Bash 等,这些工具成为了现代软件开发的基础。
GNU 的主要组件
- GNU 操作系统:
- GNU 操作系统的核心是 GNU Hurd,一个基于微内核的操作系统。
- 由于 Hurd 的开发进展缓慢,目前 GNU 操作系统通常使用 Linux 内核(称为 GNU/Linux)。
- GNU 工具链:
- GCC(GNU Compiler Collection):支持多种编程语言的编译器,如 C、C++、Fortran、Ada 等。
- GNU Make:自动化构建工具,用于管理项目的编译过程。
- GNU Bash:一个功能强大的 Unix shell,广泛用于脚本编写和命令行操作。
- GNU Coreutils:提供了一系列基本的命令行工具,如
ls
、cp
、rm
等。 - GNU Binutils:包括汇编器、链接器、库管理工具等。
- GNU 库:
- GNU C Library(glibc):C 标准库的实现,提供了系统调用和基本的 C 函数。
- GNU Scientific Library(GSL):提供了大量的数学和科学计算函数。
- GNU 应用程序:
- GNU Emacs:一个功能强大的文本编辑器。
- GNU GDB:一个强大的调试器。
- GNU GRUB:一个多操作系统引导程序。
GNU 与 Linux 的关系
- GNU 项目:目标是创建一个完全自由的操作系统,包括内核和用户空间工具。
- Linux 内核:由**林纳斯·托瓦兹(Linus Torvalds)**开发,是一个独立的内核项目。
由于 GNU Hurd 的开发进展缓慢,GNU 项目通常使用 Linux 内核来构建完整的操作系统,称为 GNU/Linux。GNU 提供了用户空间的工具和库,而 Linux 提供了内核。
GNU 许可证
GNU 项目开发了大量的自由软件,这些软件通常使用 GNU 通用公共许可证(GPL, General Public License) 发布。GPL 是一种Copyleft许可证,确保软件及其衍生作品始终保持自由。
- GPL:要求任何分发 GPL 软件或其衍生作品的人必须提供源代码,并允许他人自由使用、修改和分发。
- LGPL(Lesser General Public License):适用于库,允许非自由软件链接到 LGPL 库。
GNU 的现状
- GNU 工具链:GNU 工具链(如 GCC、GNU Make、GNU Bash 等)已经成为现代软件开发的基础,广泛应用于各种操作系统(包括 Linux、macOS 和 Windows)。
- GNU/Linux:GNU 工具和库与 Linux 内核结合,形成了 GNU/Linux 操作系统,广泛应用于服务器、桌面和嵌入式系统。
- GNU Hurd:GNU Hurd 的开发仍在进行中,但由于技术复杂性和开发资源有限,进展缓慢。
总结
GNU 是一个致力于创建完全自由操作系统的项目,提供了丰富的工具链和库,成为现代软件开发的基础。GNU 项目强调软件的自由性,通过 GPL 许可证确保软件的自由传播和修改。尽管 GNU Hurd 的开发进展缓慢,但 GNU 工具和库与 Linux 内核结合,形成了广泛使用的 GNU/Linux 操作系统。