GNU到底是什么,与Unix和Linux是什么关系
GNU(发音为 /ɡnuː/,类似“革奴”)是一个自由软件操作系统项目,由理查德·斯托曼(Richard Stallman)于1983年发起,目标是创建一个完全由自由软件组成的类Unix操作系统。它的名字是一个递归缩写,全称为 “GNU’s Not Unix”(GNU不是Unix),既致敬了Unix的设计理念,又强调了其独立性和自由性。
1. GNU的核心目标
- 替代Unix:在保持与Unix兼容的同时,确保所有软件均可自由使用、修改和分发。
- 自由软件理念:强调用户的“四大自由”:
- 自由0:按自己的意愿运行软件。
- 自由1:研究并修改软件源代码。
- 自由2:自由分发软件副本。
- 自由3:自由分发修改后的版本。
- Copyleft许可:通过GNU通用公共许可证(GPL),要求衍生作品也必须保持自由(与“Copyright”相反)。
2. GNU的组成部分
虽然GNU最初目标是开发完整的操作系统,但实际完成的核心组件包括:
- GNU工具链:
- GCC(GNU Compiler Collection):支持C/C++/Fortran等语言的编译器。
- GNU Make:自动化构建工具。
- GNU Binutils(如
ld
、as
):二进制工具集。
- 核心工具:
- GNU Bash:默认的Unix shell。
- GNU Coreutils(如
ls
、cp
、cat
):基础命令行工具。 - GNU Libc(glibc):C标准库的实现。
- 其他重要软件:
- GNU Emacs:可扩展的文本编辑器。
- GDB(GNU Debugger):调试工具。
- GNU GRUB:多系统引导程序。
3. GNU与Linux的关系
- GNU缺少内核:GNU项目开发了自己的内核Hurd,但因技术复杂进展缓慢。
- Linux的补位:1991年,林纳斯·托瓦兹(Linus Torvalds)发布了Linux内核,与GNU工具链结合后形成了可用的完整操作系统。
- 争议与正名:斯托曼主张将这类系统称为**“GNU/Linux”**(如Debian GNU/Linux),以强调GNU的贡献,但实践中多简称为“Linux”。
4. GNU的现状
- GNU/Linux系统:主流的Linux发行版(如Ubuntu、Fedora)均包含大量GNU组件。
- Hurd内核:仍在开发中,但仅作为实验性项目使用。
- 自由软件运动:GNU项目是自由软件基金会(FSF)的核心,持续推动开源和反垄断(如反对DRM技术)。
5. 常见误解
- GNU ≠ Linux:Linux是内核,GNU是工具链和理念。
- GPL ≠ 所有开源协议:GPL具有“传染性”,而MIT/BSD等许可更宽松。
- 自由软件 ≠ 免费软件:自由软件强调权利,而非价格(如Red Hat Enterprise Linux是商业软件,但遵循GPL)。
总结
GNU是自由软件运动的基石,其工具链和理念深刻影响了现代计算生态。虽然完整的GNU操作系统未实现,但“GNU/Linux”已成为服务器、嵌入式设备和开发者环境的主流选择。理解GNU有助于认识开源文化的起源和软件自由的价值观。