GNU、Unix、Linux、Makefile、GCC、GDB、GPL、CentOS 7、Ubuntu之间的关系

全文总结 

        早期,Unix系统作为一类强大的操作系统,在计算领域奠定了基础。然而,出于对软件自由的追求,Richard Stallman在1983年发起了GNU项目,旨在创建一个完全自由的、与Unix兼容的操作系统。GNU项目不仅倡议软件自由的理念,还开发了诸如GCC(GNU Compiler Collection)、GDB(GNU Debugger)等一系列重要的编程工具和库,为操作系统提供了强大的软件基础,但其自身并未完成内核的开发。

        随后,1991年,Linus Torvalds发布了Linux内核,这是一个性能优异且遵循GNU GPL许可的自由软件。Linux内核与GNU项目提供的工具和库相结合,形成了我们今天熟知的“GNU/Linux”操作系统。这一组合不仅继承了Unix的精髓,如强大的命令行界面和多用户支持,还融入了GNU的自由理念和实用工具,成为了开源软件运动中的一个里程碑。

        在此基础上,为了满足不同场景和用户群体的需求,发展出了多种Linux发行版,其中包括但不限于Ubuntu、CentOS 7和Debian。这些发行版不仅集成了Linux内核,还预装了各种应用程序、库文件以及图形用户界面(如Ubuntu的Unity或GNOME,CentOS的GNOME等),并对系统进行了定制和优化,以适应从个人桌面到企业服务器的广泛用途。例如,Ubuntu以其用户友好和频繁更新而受到欢迎,CentOS 7则以其企业级的稳定性和与RHEL的高兼容性在服务器领域占有一席之地,而Debian则以稳定性、严格的自由软件标准和庞大的软件库著称

1.1  Unix

        UNIX 是一个历史悠久、非常成熟的操作系统家族,最初由贝尔实验室的研究人员在1960年代末至1970年代初开发。它设计初衷是为了方便研究人员进行软件开发和系统管理。UNIX 提供了一个强大的命令行界面,支持多任务、多用户操作,并且具有高度的稳定性和可靠性。因其设计精良和理念先进,UNIX 成为了现代操作系统设计的基石,影响了许多后续操作系统的开发。

        UNIX 系统包括许多商业版本,如 Solaris(由Sun Microsystems开发)、AIX(IBM的产品)、HP-UX(惠普开发)等,以及一些学术和研究机构使用的版本,如伯克利软件发行版(BSD)系列。由于其早期的授权政策较为严格且费用高昂,促使了开源替代品的发展,其中最著名的就是Linux。

1.2 GNU

        GNU 是 "GNU's Not Unix!" 的递归缩写,是一个由自由软件基金会(Free Software Foundation, FSF)发起的项目,旨在创建一个完全自由的操作系统。GNU 系统意在成为Unix系统的替代品,同时强调软件自由的理念,即用户应该有运行、复制、分发、学习、修改和改进软件的自由。GNU项目不仅开发了操作系统的核心组件,还开发了许多基础软件和工具,其中就包括了GCC。

 1.3 Makefile

        Makefile 是一个用于自动化编译和构建过程的文本文件,尤其在软件开发项目中被广泛使用。它定义了一系列规则,说明了如何将源代码文件编译成可执行文件、库或者其他目标文件。Makefile 的核心作用在于它能够管理源代码文件之间的依赖关系,并只重新编译那些发生更改或者其依赖项发生更改的文件,从而极大地提高了编译效率。

Makefile 中主要包括以下元素:

  1. 目标(Targets):Makefile 中的一个任务或者产物,可以是可执行文件、目标文件(.o)、库文件等。
  2. 依赖(Prerequisites):生成目标所需要的输入文件或条件。
  3. 命令(Commands):用于生成目标的具体操作,如编译、链接等,通常是一系列 shell 命令。

         当开发者在命令行输入 make 命令时,Make 工具(通常是 GNU Make)会读取当前目录下的 Makefile,并根据文件中的规则自动执行必要的编译步骤。Make 工具还会检查每个目标的修改时间与其依赖项相比是否更新,以决定是否需要重新编译该目标,这一特性确保了只有当真正需要时才进行编译,节省了时间和资源。

1.4 GCC

        GCC,全称 GNU Compiler Collection(GNU编译器套件),是GNU项目的一部分,是一个强大的编译器集合,支持多种编程语言,如C、C++、Objective-C、Fortran、Ada、Go等。GCC最初是为GNU操作系统设计的官方编译器,但因其高质量和跨平台的特性,现在已成为大多数类Unix操作系统(如Linux、BSD、macOS)的标准编译器,并且也能在其他操作系统如Microsoft Windows上使用。GCC遵循GNU General Public License (GPL),是一款自由软件,任何用户都可以自由地使用、复制、修改和重新发布它。

1.5 GDB 

        GDB 是 "GNU Debugger" 的缩写,是 GNU 项目提供的一个强大的调试工具。它主要用于C、C++和其他多种编程语言的程序调试,支持在程序运行时进行逐行执行、设置断点、查看和修改变量值、跟踪函数调用、检查内存使用情况以及分析程序崩溃原因等功能。

        GDB 允许开发者深入到程序的内部运行状态中,这对于发现和修复代码中的错误至关重要。它通过与被调试程序的交互,提供了丰富的命令集来控制程序的执行流程,同时还可以读取并解析由编译器生成的调试信息(通常在编译时通过 -g 选项启用),以便展示源代码级别的调试细节,而不仅仅是汇编或机器码。

        GDB 可以在各种操作系统平台上运行,特别是在 Unix-like 系统(如 Linux、macOS)上被广泛使用,同时也有针对 Windows 平台的移植版本。它是开发人员在软件开发周期中进行代码调试时不可或缺的工具之一。

1.6 GPL 

         GPL,全称为GNU General Public License(GNU通用公共许可证),是一种广泛使用的自由软件许可证,由自由软件基金会(Free Software Foundation, FSF)创建并维护。理查德·马修·斯托曼(Richard Matthew Stallman)为了GNU计划撰写了GPL,旨在保护软件用户的自由,确保他们能自由地运行、复制、分发、学习、修改和改进软件。

        GPL的核心理念是要求软件以源代码形式提供,并保证任何基于GPL许可的软件修改版或衍生作品也必须遵循相同的许可证条款发布。这意味着如果你使用了GPL许可的软件作为你项目的一部分,那么你的整个项目也必须在GPL许可下发布,这通常被描述为GPL的“传染性”或“病毒性”。这样的设计是为了促进软件的自由流通和持续的社区贡献,防止任何人将自由软件变为私有软件并限制其自由度。

1.7 Linux

         Linux 是一个基于 UNIX 设计思想的操作系统内核,由林纳斯·托瓦兹(Linus Torvalds)在1991年首次发布。Linux 内核是自由和开放源代码的,任何人都可以免费获得其源代码、使用、修改和重新分发。这一特性极大地促进了其在全球范围内的普及和发展。

        Linux 系统通常指的是基于 Linux 内核,搭配各种 GNU 工具和应用程序、窗口系统(如X Window System或者Wayland)、桌面环境(如GNOME、KDE)等组成的一个完整的操作系统。由于其开源特性,存在许多不同的Linux发行版,如Ubuntu、Debian、Fedora、Red Hat Enterprise Linux、openSUSE、Arch Linux等,这些发行版针对不同的用户群和应用场景进行了定制化。

1.8 CentOS 7

        CentOS 7 是一个基于Linux的开源操作系统,它是Community ENTerprise Operating System(社区企业操作系统)项目的第七个主发行版。CentOS项目的目标是提供一个与Red Hat Enterprise Linux (RHEL) 兼容的、稳定的、免费的企业级操作系统。CentOS 7 发布于2014年,它使用了Linux 3.10内核,并且包含了大量的软件包和工具,适合服务器部署和企业环境使用。

1.9 Ubuntu

        Ubuntu是一个基于Debian的开源Linux操作系统,由Canonical公司开发和维护。其名称来源于非洲南部祖鲁语,意为“人性”、“我的存在是因为大家的存在”,体现了非洲传统文化中的共享和团结精神。Ubuntu的目标是为用户提供一个最新、稳定、安全且主要由自由软件构建的操作系统,它不仅对个人免费,还提供了广泛的社区支持以及付费的专业支持选项。

        Ubuntu设计初衷是为桌面用户提供友好的用户体验,同时它也适用于服务器、云环境、物联网设备等多种应用场景。它采用了GNOME作为默认的桌面环境,每6个月发布一个新版本,确保用户能获取到最新的软件和技术更新。Ubuntu有一个庞大的软件仓库,包含数以万计的应用程序,覆盖日常办公、多媒体、编程开发、服务器管理等多个领域。

        Ubuntu强调易用性、国际化和无障碍访问,支持多国语言,并且在开源社区中非常活跃,吸引了大量开发者和贡献者参与其生态系统建设。此外,Ubuntu还是许多其他流行Linux发行版的基础,比如Linux Mint和elementary OS等,显示了其广泛的影响和认可度。

2.0 什么是发行版?

发行版(Distribution),在计算机软件领域,尤其是操作系统方面,是指基于某种操作系统内核(如Linux内核),并集成了各种软件应用程序、库、管理工具、桌面环境等组件的一个预编译好的软件包集合。发行版为用户提供了一个即装即用的操作系统环境,无需用户手动从零开始安装和配置每一个组件。每个发行版都会根据其目标用户群体(如个人用户、开发者、企业等)和特定需求(如稳定性、最新技术、用户界面友好性等)来定制和优化这些组件。

2.1 常见的Linux发行版

常见的Linux发行版包括但不限于:

  1. Ubuntu:基于Debian,以其用户友好、软件更新频繁、社区支持强大而闻名,适合桌面用户和云环境。

  2. Debian:一个非常稳定和高度自由的发行版,适合服务器和有经验的Linux用户,提供了大量的软件包。

  3. Fedora:由Red Hat赞助,注重创新和采用最新技术,是许多新技术首次亮相的平台,适合开发者和爱好者。

  4. Red Hat Enterprise Linux (RHEL):面向企业的商业发行版,提供长期支持和专业服务,广泛应用于企业服务器和数据中心。

  5. CentOS(直至CentOS 8):过去是作为RHEL的免费和社区支持版本,适用于寻求企业级稳定性的用户。现在CentOS Stream转变为一个滚动发布的开发版本。

  6. openSUSE:提供了Leap(稳定版)和Tumbleweed(滚动更新版)两个分支,适合不同需求的用户。

  7. Arch Linux:面向进阶用户,以滚动更新、极简主义和高度自定义性著称,使用Pacman作为包管理器。

  8. Manjaro Linux:基于Arch Linux,但更注重用户友好性,提供预配置的桌面环境和更方便的安装过程。

  9. Mint:基于Ubuntu,着重于提供一个开箱即用、对新手友好的桌面体验,特别适合Windows用户过渡到Linux。

全文总结 

        早期,Unix系统作为一类强大的操作系统,在计算领域奠定了基础。然而,出于对软件自由的追求,Richard Stallman在1983年发起了GNU项目,旨在创建一个完全自由的、与Unix兼容的操作系统。GNU项目不仅倡议软件自由的理念,还开发了诸如GCC(GNU Compiler Collection)、GDB(GNU Debugger)等一系列重要的编程工具和库,为操作系统提供了强大的软件基础,但其自身并未完成内核的开发。

        随后,1991年,Linus Torvalds发布了Linux内核,这是一个性能优异且遵循GNU GPL许可的自由软件。Linux内核与GNU项目提供的工具和库相结合,形成了我们今天熟知的“GNU/Linux”操作系统。这一组合不仅继承了Unix的精髓,如强大的命令行界面和多用户支持,还融入了GNU的自由理念和实用工具,成为了开源软件运动中的一个里程碑。

        在此基础上,为了满足不同场景和用户群体的需求,发展出了多种Linux发行版,其中包括但不限于Ubuntu、CentOS 7和Debian。这些发行版不仅集成了Linux内核,还预装了各种应用程序、库文件以及图形用户界面(如Ubuntu的Unity或GNOME,CentOS的GNOME等),并对系统进行了定制和优化,以适应从个人桌面到企业服务器的广泛用途。例如,Ubuntu以其用户友好和频繁更新而受到欢迎,CentOS 7则以其企业级的稳定性和与RHEL的高兼容性在服务器领域占有一席之地,而Debian则以稳定性、严格的自由软件标准和庞大的软件库著称

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空间转录组学联合单细胞转录组学揭示卵巢癌生存相关受配体对

卵巢癌,作为女性生殖系统中的一种常见恶性肿瘤,其高级别浆液性卵巢癌(HGSC)亚型尤其致命。尽管多数患者对初次治疗反应良好,但超过75%的晚期HGSC患者会在治疗后复发,并且对化疗药物产生耐药性。然而&#x…

vs code + Keil Assistant 配置 Keil 单片机开发

1、 先安装vscode完成后 安装插件 2 安装C/C 与 keil Assistant 需说明一下 Assistant 1.7.0版本有bug F7按不了 所以安装1.6.2版本 以下是我的安装插件 EMBEDDED IDE 可安装 可不安装 随便你 3 配置 Assistant 4、设置C/C 目录 ${workspaceFolder}/**D:/Keil_v5/C51/INC/**…

排序算法系列一:选择排序、插入排序 与 希尔排序

零、说在前面 本文是一个系列,入口请移步这里 一、理论部分 1.1:选择排序 1.1.1:算法解读: 使用二分法和插入排序两种算法的思想来实现。流程分为“拆分”、“合并”两大部分,前者就是普通的二分思想,将…

应急响应靶机-Linux(2)

前言 本次应急响应靶机采用的是知攻善防实验室的Linux-2应急响应靶机 靶机下载地址为: https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码: root/Inch957821.(记住要带最后的点.) 解题 启动靶机 不建议直接使用账号密码登录,建议用另一台主…

900kW直流负载组-DC系列负载组

R900 DC 型是一个固定式 900kW 直流负载组,旨在准确模拟典型直流电源在实际运行过程中遇到的负载;例如用于物料搬运设备、固定电源和电动汽车领域的设备,例如车队车辆、地面支持设备 (GSE)、工业机器人等。 技术细节 负载组 R9…

海富泰可直动式比例阀控制器EVRD-03C26SB-C1D24-B00

控制EVOTEK海富泰可直动式及先导式比例方向阀EVRD-03A04SA-C1D24-V00、EVRD-03C08SB-C1D24-B00、EVRD-03A16SA-C1D24-V00、EVRD-03C26SB-C1D24-B00、EVRD-05A30SA-C1D24-V00、EVRD-05C60SB-C1D24-B00、EVRD-P05A80SA-IIC1D24-B00、EVRD-P07C100SB-EEC1D24-V00、EVRD-P07A150SA-…

Python学习笔记23:进阶篇(十二)常见标准库使用之日期时间功能datetime模块的学习使用

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 日期和时…

【SSM】医疗健康平台-管理端-运营数据报表导出

知识目标 熟悉JasperReports的用法,能够使用JasperReports实现PDF文件导出 掌握Excel方式导出运营数据报表的方法,能够使用Apache POI以Excel方式导出运营数据报表 掌握PDF方式导出运营数据报表的方法,能够使用JasperReports以PDF方式导出运…

Linux基础 - iptables 与 firewalld 防火墙

目录 零. 简介 一. iptables 二. firewalld 三. 总结 零. 简介 iptables iptables 是 Linux 内核中集成的一种基于命令行的防火墙工具。它通过一系列规则来控制网络数据包的流动,包括允许、拒绝、修改数据包等操作。iptables 可以对入站、出站和转发的数据包进…

Arcgis 计算经纬度坐标并补齐6位小数

工作中我们经常需要在Arcgis中计算点的经纬度或者线的起点、终点坐标,为确保数据的准确性,我们必须保留6位小数,但我们在默认计算的时候偶尔会遇到算出来的经纬度坐标小数位不足6位,那我们应该如何补齐呢,这里我将方法…

结构冒险,控制冒险,数据冒险实例分析

目录 1.结构冒险: 2.数据冒险: 3.控制冒险: 指令执行过程: 取指(IF):从指令存储器或 Cache 中取指令。 译码/读寄存器(ID):操作控制器对指令进行译码,同时从寄存器堆中取操作数。 执行/计算地…

黑鹰优化算法(BEO)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 一、种群初始化 二、围捕行为 三…

centos上快速搭建zfile文件网站

什么是zfile? zfile文件网站是最方便快捷的在线目录展示程序,支持将本地文件、FTP、SFTP、S3、OneDrive 等存储在网站上展示并浏览! 本教程参考: https://docs.zfile.vip/install/os-linux复现 今天的搭建环境是centos7.9 第一…

Spring Boot 整合 JSP

Spring Boot 是一个开源的 Java 框架,用于创建独立、生产级的基于 Spring 框架的应用程序。它简化了基于 Spring 的应用程序的创建和部署过程。JSP(JavaServer Pages)是一种动态网页技术,允许开发者在 HTML 中嵌入 Java 代码。将 …

CSS|03 尺寸样式属性文本与字体属性

尺寸样式属性 height:元素高度height的值:auto 自动length 使用px定义高度% 基于包含它的块级对象的百分比高度 width:元素的宽度width的值与height一样span标签可以设置宽度、高度吗? 答:不可以,因为span标签是一个行…

A-8 项目开源 qt1.0

A-8 2024/6/26 项目开源 由于大家有相关的需求,就创建一个项目来放置相关的代码和项目 欢迎交流,QQ:963385291 介绍 利用opencascade和vulkanscene实现stp模型的查看器打算公布好几个版本的代码放在不同的分支下,用qt实现&am…

科技赋能·创领未来丨智合同和百胜中国就Contract AI Studio项目达成合作

#智合同 #百胜中国 #AIGC #NLP #LLM #Contract AI Studio 近期,国内AIGC和LLM大语言模型发展可谓是如火如荼,其迅速崛起为社会和产业发展起到了非常重要的作用。人们利用AI技术(AIGC、LLM大语言模型、NLP等)将其赋能到企业生…

华为仓颉编程语言

目录 一、引言 二、仓颉编程语言概述 三、技术特征 四、应用场景 五、社区支持 六、结论与展望 一、引言 随着信息技术的快速发展,编程语言作为软件开发的核心工具,其重要性日益凸显。近年来,华为公司投入大量研发资源,成功…

记录待办事项的便签软件哪个好用?

在快节奏的现代生活中,我们经常需要处理各种各样的待办事项,为了更好地管理时间,许多人选择使用便签软件来记录自己的待办事项。那么,记录待办事项的便签软件哪个好用?市面上众多的便签软件中,哪一个才是最…

【C++题解】1715. 输出满足条件的整数5

问题:1715. 输出满足条件的整数5 类型:简单循环 题目描述: 有这样一个四位数,其千位和百位之和为偶数,十位和个位之和为奇数,且前两位之和大于后两位之和,且含有因数 8 ,请输出满足上述条件的…