【C++基础】GNU简介

GNU(GNU's Not Unix)是一个由**自由软件基金会(FSF, Free Software Foundation)发起的项目,目标是创建一个完全自由的操作系统。GNU 项目由理查德·斯托曼(Richard Stallman)**于 1983 年发起,旨在提供一个类 Unix 的操作系统,但完全由自由软件组成。

GNU 的名字是一个递归缩写,意思是"GNU's Not Unix"(GNU 不是 Unix),表达了 GNU 的目标是创建一个与 Unix 兼容但独立的系统。


GNU 的核心目标

  1. 自由软件
    • GNU 项目强调软件的自由性,用户有权利运行、复制、分发、研究、修改和改进软件。
    • 自由软件的四大自由:
      • 自由 0:自由运行程序。
      • 自由 1:自由研究和修改程序。
      • 自由 2:自由分发程序。
      • 自由 3:自由分发修改后的程序。
  2. 类 Unix 系统
    • GNU 的目标是创建一个与 Unix 兼容的操作系统,但完全由自由软件组成。
  3. GNU 工具链
    • GNU 项目开发了大量的工具和库,如 GCC(GNU Compiler Collection)、GNU Make、GNU Bash 等,这些工具成为了现代软件开发的基础。

GNU 的主要组件

  1. GNU 操作系统
    • GNU 操作系统的核心是 GNU Hurd,一个基于微内核的操作系统。
    • 由于 Hurd 的开发进展缓慢,目前 GNU 操作系统通常使用 Linux 内核(称为 GNU/Linux)。
  2. GNU 工具链
    • GCC(GNU Compiler Collection):支持多种编程语言的编译器,如 C、C++、Fortran、Ada 等。
    • GNU Make:自动化构建工具,用于管理项目的编译过程。
    • GNU Bash:一个功能强大的 Unix shell,广泛用于脚本编写和命令行操作。
    • GNU Coreutils :提供了一系列基本的命令行工具,如 lscprm 等。
    • GNU Binutils:包括汇编器、链接器、库管理工具等。
  3. GNU 库
    • GNU C Library(glibc):C 标准库的实现,提供了系统调用和基本的 C 函数。
    • GNU Scientific Library(GSL):提供了大量的数学和科学计算函数。
  4. 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 操作系统。

相关推荐
滑雪的企鹅.12 小时前
Kotlin云头条技术点剖析(项目复习02)——用户协议页面
android·开发语言·kotlin
南 阳12 小时前
Python从入门到精通day59
开发语言·python·php
JMchen12312 小时前
Android NDK开发从入门到实战:解锁应用性能的终极武器
android·开发语言·c++·python·c#·android studio·ndk开发
会飞De琥珀12 小时前
java工具类,字符串转时间
java·开发语言
源码潇潇和逸逸13 小时前
独立部署高校圈子平台:PHP+UniApp打造社交+交易+服务一站式校园解决方案
开发语言·uni-app·php
LINgZone213 小时前
深入解析:Cglib与JDK动态代理的实现原理、区别及性能对比
java·开发语言
一次旅行13 小时前
今日心理学知识分享(三)
开发语言·javascript·程序人生·ecmascript
AI科技星13 小时前
光速螺旋量子几何统一场论——基于 v ≡ c 公理的四大基本力全维度求导证明与精准数值验证
c语言·开发语言·人工智能·算法·机器学习·平面
天天学IT13 小时前
第三章 Qt 编译及安装
开发语言·qt·qt教程·qt6教程
xyq202413 小时前
Window Memcached 安装指南
开发语言