当前位置: 首页 > news >正文

GNU到底是什么,与Unix和Linux是什么关系

GNU(发音为 /ɡnuː/,类似“革奴”)是一个自由软件操作系统项目,由理查德·斯托曼(Richard Stallman)于1983年发起,目标是创建一个完全由自由软件组成的类Unix操作系统。它的名字是一个递归缩写,全称为 “GNU’s Not Unix”(GNU不是Unix),既致敬了Unix的设计理念,又强调了其独立性和自由性。


1. GNU的核心目标

  • 替代Unix:在保持与Unix兼容的同时,确保所有软件均可自由使用、修改和分发。
  • 自由软件理念:强调用户的“四大自由”:
    1. 自由0:按自己的意愿运行软件。
    2. 自由1:研究并修改软件源代码。
    3. 自由2:自由分发软件副本。
    4. 自由3:自由分发修改后的版本。
  • Copyleft许可:通过GNU通用公共许可证(GPL),要求衍生作品也必须保持自由(与“Copyright”相反)。

2. GNU的组成部分

虽然GNU最初目标是开发完整的操作系统,但实际完成的核心组件包括:

  • GNU工具链
    • GCC(GNU Compiler Collection):支持C/C++/Fortran等语言的编译器。
    • GNU Make:自动化构建工具。
    • GNU Binutils(如ldas):二进制工具集。
  • 核心工具
    • GNU Bash:默认的Unix shell。
    • GNU Coreutils(如lscpcat):基础命令行工具。
    • 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有助于认识开源文化的起源和软件自由的价值观。

http://www.dtcms.com/a/292825.html

相关文章:

  • 链表经典算法题
  • web复习
  • 网络原理 HTTP 和 HTTPS
  • kafka查看消息的具体内容 kafka-dump-log.sh
  • Python笔记完整版
  • 扇形区域拉普拉斯方程傅里叶解法2
  • 一款功能全面的文体场所预约小程序
  • Grails(Groovy)框架抛出NoHandlerFoundException而不是返回404 Not Found
  • 【多线程篇21】:深入浅出理解Java死锁
  • 《Uniapp-Vue 3-TS 实战开发》自定义预约时间段组件
  • 7.22总结mstp,vrrp
  • WebSocket心跳机制实现要点
  • 京东AI投资版图扩张:具身智能与GPU服务器重构科研新范式
  • 小鹏汽车视觉算法面试30问全景精解
  • 学习游戏制作记录(战斗系统简述以及击中效果)7.22
  • 为什么使用扩展坞会降低显示器的最大分辨率和刷新率
  • 智能泵房监控系统:物联网应用与智能管理解决方案
  • 【观察】维谛技术(Vertiv)“全链智算”:重构智算中心基础设施未来演进范式
  • 如何编译RustDesk(Unbuntu 和Android版本)
  • Cookies 详解及其与 Session 的协同工作
  • AWS OpenSearch 搜索排序常见用法
  • 2️⃣tuple(元组)速查表
  • C语言面向对象编程
  • Java函数式编程深度解析:从基础到高阶应用
  • Leetcode题解:209长度最小的子数组,掌握滑动窗口从此开始!!!
  • 光伏电站智能数据采集系统解决方案
  • SpringBoot PO VO BO POJO实战指南
  • 十进制小数转换为二进制表示 ← 除2取余法+乘2取整法
  • csp基础知识——递推
  • SMTP+VRRP实验