目录

  • autoreconf 命令的作用是什么?
  • aclocal
  • automake -a
  • autoconf
  • 一条命令搞完三面三步
  • 既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制?
  • Module-Init-Tools 软件包的作用是什么?
  • Patch 软件包的作用是什么?
  • Psmisc 软件包的作用是什么?
  • Rsyslog 软件包的作用什么?
  • sysvint 软件包的作用是什么?
  • Udev 软件包的作用是什么?
  • DHCPCD 软件包的作用是什么?
  • Xz-Utils 软件包的作用是什么?
  • openssl 软件包的作用是什么?
  • openssh 软件包的作用是什么?
  • Bootscript 软件包的作用是什么?
  • 启动脚本是什么?
  • sysvinit 的运行级是什么概念?
  • 系统运行时如何改变运行级?P233
  • GRUB 软件包的作用是什么?
  • Linux 内核软件包的作用是什么?

autoreconf 命令的作用是什么?

大多数软件包在发布源代码的时候会提供 configure 配置脚本,该配置脚本多数是由 autoconf 软件包提供的命令根据 configure.ac 或 configure.in 文件所产生的。

个别软件包发布时未提供如 configure 等编译相关的配置文件,在编译前需要使用 automake 和 autoconf 软件包中提供的命令来生成相关的文件。

装备好配置编译脚本文件的过程是

aclocal
automake -a
autoconf

aclocal

这个命令是根据 configure.ac 文件产生 aclocal.m4 文件,该文件是使用 m4 命令进行解析的宏文件,其中定义了配置过程中需要测试的内容。

automake -a

根据 makefile.am 文件生成 makefile.in 文件,makefile.in 文件会在 configure 脚本处理后生成编译控制文件 makefile,GNU 软件发布代码中通常需要包含 License、README、TODO 和 Changelog 文件,通常情况下这些文件与软件包的编译无关,但是如果缺少这些文件 automake 命令不会生成 makefile.in 文件,automake 软件包中提供了这些文件的模板,automake 命令使用 -a 参数将自动用模板文件补全缺少的文件。

autoconf

这个命令根据 configure.ac 或 configure.in 模板文件来生成 configure 配置脚本文件。

一条命令搞完三面三步

上述几条明林够可以合并为一条命令来完成,命令如下:

autoreconf -i

通过这个命令将完成符合编译条件的源代码目录,接着就可以进行配置、编译和安装等常规步骤了。

既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制?

软件编译大多使用 make 命令控制完成,虽然目前也有其他的编译控制软件,如 cmake 和 qmake 等,但是目前 make 命令依然是使用最为广泛的编译控制软件。

make 命令不仅用于编译,还可以用于处理控制相关的工作,比如并行化的系统启动以及软件包依赖管理控制等。

Module-Init-Tools 软件包的作用是什么?

这个软件包中包含了可以处理 Linux 内核 2.5.47 以上版本模块所需要的命令。

Patch 软件包的作用是什么?

这个软件包中包含了一个根据补丁文件的内容来修改或者创建文件的程序。

补丁文件通常是用 diff 明林个创建的文本文件,用于修正现有文件的问题或者错误。

Psmisc 软件包的作用是什么?

这个软件包包含了用于显示进程信息的相关的程序。

Rsyslog 软件包的作用什么?

这个软件包中包含了饿记录系统日志信息(如发生异常事件时内核发出的消息)的程序。

大多数 linux 系统都具有记录系统以及软件运行状态、错误类型等信息报告的功能,以便出现了问题可以进行跟踪和排查。

sysvint 软件包的作用是什么?

这个软件包中包含了饿一组控制系统启动、运行、关闭的程序。

Udev 软件包的作用是什么?

这个软件中包含了一组用于动态创建设备文件的程序,可以将这些程序一并称呼为 Udev 系统。

大多数 linux 系统都使用 udev 系统来管理 /dev 目录中的设备文件,Udev 系统会自动检测计算机并生成设备文件,udev 系统还具有热插拔设备的管理能力,能够根据设备的实际使用情况来动态的创建和删除设备文件,几大的节省了管理设备文件的难度。

DHCPCD 软件包的作用是什么?

许多局域网的网络管理会使用自动分配 IP 的方式,DHCPCD 软件包提供了自动获取并分配 IP 地址的功能(需要网络存在 DHCP 服务),省去了手工去设置 IP 的麻烦。

Xz-Utils 软件包的作用是什么?

这个软件包提供了对于 lzma 和 xz 压缩格式的支持。

目前越来越多的文件采用 lzma 或 xz 的压缩格式,该格式的压缩率非常高。

openssl 软件包的作用是什么?

这个软件包包含了大量的加密和认证相关的算法,是一个非常重要和基础的加密算法函数库,目前有大量的开源软件使用的加密算法基于该软件包提供的函数库,比如安装了这个软件包后 wget 可以提供对 HTTPS 等加密协议的支持。

openssh 软件包的作用是什么?

这个软件包中包含了使用安全加密算法的网络链接客户端(ssh)和服务端(sshd)程序,是网络中进行数据安全传输中最为常用的工具。

他提供的 ssh 和scp 命令几乎出现在现在所有的 Linux 系统中。

Bootscript 软件包的作用是什么?

大多数 linux 系统都会包含一套启动和关闭系统的脚本,bootscripts 软件包中包含了一套脚本专门用于启动/关闭本次完成的目标系统。

启动脚本是什么?

大多数 linux 系统使用的是基于运行级(run-levles)概念的启动工具(sysvinit),在不同的运行级上使用不同的脚本集合,这些脚本集合完成了对应运行级所需要的任务。

不同 linux 系统所包含的启动脚本大多数情况下是不同的,每个系统根据其自身的规则来定制脚本,这使得在某个 linux 系统发行版上可以正常工作的脚本不一定能够在另一个 linux 发行版上正常工作。

虽然脚本不同,但是基于 sysvinit 软件包提供的启动功能还是具有一定的规范的。

sysvinit 的运行级是什么概念?

sysvinit(从现在开始我们称之为 init)以运行几的模式来工作,一般定义了七个运行级(从 0 到 6,实际上还可以有更多的运行级,参考 man 8 init 获得更多信息),每个运行级对应于一套设定好的任务,当启动某个运行级时,操作系统就需要执行相应的任务,下面是不同运行级的任务描述:

0,关闭计算机1,启动到单用户模式2,启动到无网络的多用户模式3,启动到有网络的多用户模式4,保留的启动级别,可用作自定义,默认同运行级 35,同运行级 4,一般用于图形界面(GUI)登录任务(如启动到 X 的 xdm、KDE 的 kdm)6,重新启动计算机

启动时根据 /etc/inittab 中的设置来确定使用哪个级别的启动,该配置文件中有一行内容如下 id:3:initdefault: 这里的数字 3 就代表了默认使用运行级为 3 的启动任务。

系统运行时如何改变运行级?P233

系统运行时改变运行级的命令是

init <运行级别>

例如要重启计算机,用户可以直接运行 init 6 命令,reboot 命令其实知识这个命令的别名,同样 halt 命令是 init 0 的一个别名。

在 /etc/rc.d 目录下有一些类似于 rc?.d (这里 ? 是运行级的数字表示)及 rcsysinit.d 目录,目录中都包含了许多链接文件,以 K 和 S 字幕开头后跟数字和任务名称,他们的含义是: K 字母表示是停止一个服务, S 字母表示是启动一个服务,数字则确定脚本的执行顺序,从 00 到 99(数字越小执行的越早),当 init 转换到某个运行级时,响应的任务就会停止(K 开头),另一些服务就会启动(S 开头)

在 /etc/rc.d/rc?.d 以及 rcsysinit.d 目录中的都是链接文件,真正的脚本文件存放在 /etc/rc.d/init.d 目录中,每个文件完成一组实际任务。

一般情况下,任务名称相同的停止脚本和启动脚本的链接都是指向 /etc/rc.d/init.d 目录中同一个脚本,启动控制程序会根据链接文件的名称使用不同参数调用脚本,参数包括 start、stop、restart、reload 和 status 等,以 K 开头的链接文件,使用 stop 参数调用运行,以 S 开头的链接文件,调用 start 参数调用运行。

例外的是 rc0.d 和 rc6.d 目录中以 S 开头的链接文件使用 stop 参数调用,用来停止某些服务,这背后的逻辑是:重启或者关闭系统时,不会是启动服务,只会停止。

以下是脚本参数的描述:

start,启动服务stop,停止服务restart,停止服务,然后再启动reload,该服务的配置已经更新,在修改了某服务的配置文件后,不想重启服务的死后可以使用该参数status,显示服务的状态,如果服务正在运行,会显示该服务进程的 PID 编号

GRUB 软件包的作用是什么?

这个软件包是一个可以在 x86 平台上用于启动常见操作系统的启动器。

Linux 内核软件包的作用是什么?

这个软件包中包含了饿一个类 UNIX 操作系统内核的实现——Linux

为什么不实用 make install 命令来安装内核?

因为会导致如 /usr/include 目录中的头文件丢失的问题。

转载于:https://www.cnblogs.com/0x1D/p/4744924.html

《手把手教你构建自己的 Linux 系统》学习笔记(9)相关推荐

  1. linux系统学习笔记9——CANOpen状态转换

    CANopen CANopen状态转换 CANopen状态转换 从节点上电和内部初始化之后自动进入预损作状太(Pre-operational State),在进入预操作之前,发送标准的启动对象(Boo ...

  2. linux系统学习笔记6——debian系统分屏操作(亲测)

    debian系统分屏 刚插上HDMI链接屏幕后,发现两个屏幕是复制的效果 `步骤` xrandr | grep connecteda 1.查看现有的屏幕型号 由上图可以看到,一个是eDP-1 分辨率1 ...

  3. Linux系统学习笔记:文件描述符标志

    文件描述符标志的概念 文件描述符标志(目前就只有一个close-on-exec): 它仅仅是一个标志,当进程fork一个子进程的时候,在子进程中调用了exec函数时就用到了这个标志.意义是执行exec ...

  4. linux硬件控制流,Linux系统学习笔记:异常控制流

    程序计数器中指令的地址的过渡称为控制转移,控制转移的序列称为处理器的控制流.最简单的是平滑流.跳转.调用和返回等指令会造成平滑流的突变,来对内部的程序状态中的变化做出反应.系统也需要能够对系统状态的变 ...

  5. Linux系统学习笔记二

    参考课程: 基于VSCode和CMake实现C/C++开发 | Linux篇_哔哩哔哩_bilibili 1.文件编辑器 vim:是所有Unix和Linux系统下标准的文件编辑器 gedit:Linu ...

  6. linux系统学习笔记8——LiuxCNC镜像系统安装步骤

    前言 LinuxCNC系统安装 有几个问题可能会遇到需要避免 1 .电脑系统启动模式 boot mode 需要修改成 legancy2.如果是将硬盘分区,那么安装linuxcnc系统镜像的分区最好在前 ...

  7. 最全Linux系统学习笔记--持续更新

    1.shell语法 命令 选项 参数 命令:整条shell命令的主体 选项:会影响会微调整个命令的行为 参数:命令作用的对象 1.自动补全 2.快捷键 ctrl+C:终止前台运行的程序 ctrl+D: ...

  8. linux系统中运行软件,Linux系统学习笔记:运行程序

    为了理解程序运行时计算机做了什么,有必要了解一下计算机的硬件组成.下图给出了计算机的一个硬件组成抽象. 系统的硬件组成 总线是贯穿整个系统的一组电子管道,它携带信息字节并负责在各部件之间传递,一般传递 ...

  9. 韩顺平Linux教程学习笔记

    Linux系统学习笔记   新装了deepin v23系统,结果磁盘没设置好,玩崩了,百度半天修复不了,看看韩顺平老师的Linux操作课程,做做笔记(只记录对自己有用的).   B站网址 基础篇·Li ...

  10. 手把手教你构建 C 语言编译器(8)- 表达式

    这是整个编译器的最后一部分,解析表达式.什么是表达式?表达式是将各种语言要素的一个组合,用来求值.例如:函数调用.变量赋值.运算符运算等等. 表达式的解析难点有二:一是运算符的优先级问题,二是如何将表 ...

最新文章

  1. 如何在iOS或macOS上检查活动的Internet连接?
  2. 很多人都不知道,其实博客园给我们博客开了二级域名
  3. [课程复习] 数据结构之线性表、树、图、查找、排序经典算法复习
  4. parseInt(string, radix)
  5. 【Python】简单实现显示图片的高斯和中值滤波效果
  6. Welcome to NHibernate
  7. 开启打印服务Print Spooler
  8. P1938 [USACO09NOV]Job Hunt S(spfa,队列+邻接表优化)
  9. JavaScript简单的数据总计怎么做?
  10. h5画三角形_H5如何在网页中绘制三角形,值得一看
  11. 题目1 求Sum=x+xx+xxx+xxxx+xxx+xx+x的值,其中x是一个1~9的数字。从键盘上输入任意1~9的数字(如输入此范围外的数据,不处理该数据,程序提醒后继续输入),请输出Sum的结果
  12. 添加msg文件找不到目录add_message_files() directory not found:
  13. 关于项目管理的通俗讲解
  14. Solana 基金会与韩国区块链孵化器 ROK Capital 合作推出 2000 万美元生态基金
  15. 一图看懂,阿里云飞天企业版如何支持政企数智创新
  16. Sentinel(哨兵)检测主观下线、客观下线、选举领头Sentinel、实现故障转移
  17. iPhone字体显示大全
  18. jsp 如何 返回数据库数据供前端访问 /简单的jsp接口如何编写 /jsp如何链接数据库
  19. Java使用Jsoup和Selenium抓取西瓜小视频
  20. 关于无线网络的简单整理

热门文章

  1. 2021西湖论剑 Re wp
  2. 看山聊 Java:检查日期字符串是否合法
  3. 设置 Scite编辑器的默认编辑为 UTF-8 ,及其他一些参数配置
  4. Kafka 入门与实践
  5. cubieboard开发板简介
  6. Windows如何查看IIS访问IP记录
  7. 392高校毕业设计选题
  8. c语言中shift的作用,Shift是什么意思?Shift键都有什么作用?
  9. 云控系统搭建需要那个运行商网线
  10. 十条网站盈利模式分析总结