目录

  • 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,保留的启动级别,可用作自定义,默认同运行级 3

5,同运行级 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 目录中的头文件丢失的问题。

《手把手教你构建自己的 Linux 系统》学习笔记(9)的更多相关文章

  1. 《手把手教你构建自己的 Linux 系统》学习笔记(10)

    目录 /etc/fstab 文件的作用是什么? Linux 内核的图形化启动是怎么回事? Linux 系统中的文件名是否以大小写来进行区别? 「GRUB 中无法找到硬盘」怎么解决? 「GRUB 及配置 ...

  2. 《手把手教你构建自己的 Linux 系统》学习笔记(8)

    目录 Binutils 软件包有什么用? make -k 的作用是什么? man-pages 里有几种文档?分别表示什么意思? 如何查询指定目录的 man-pages ? 如何使用 make 命令的同 ...

  3. 《手把手教你构建自己的 Linux 系统》学习笔记(6)

    目录 /dev 目录是干什么的? /proc 和 /sys 目录是干什么的? udev 这个软件是干什么用的? 目录映射是临时性的,还是永久性的? 命令行里大括号 "{}" 的作用 ...

  4. 《手把手教你构建自己的 Linux 系统》学习笔记(5)

    交叉编译是什么? 交叉编译就是在一个系统上,编译生成另外一个系统运行的程序文件. 「硬件体系结构」和「操作系统」的关系是什么? 硬件体系结构也可以称为架构,主要是通过 CPU 的指令集来进行区分的,操 ...

  5. 《手把手教你构建自己的 Linux 系统》学习笔记(2)

    Linux 系统定制原理 虚拟根目录 我们的目标是为了完成目标系统(也就是我们要做的系统),他是一个可以独立运行的系统,不依赖雨主系统和临时系统,根据 Linux 系统的特点它需要存放在根目录下面,但 ...

  6. 《手把手教你构建自己的 Linux 系统》学习笔记(1)

    第二章.基础准备--Linux 系统定制原理 Linux 系统的组成及架构 共享库和静态库 在 Linux 系统中,函数库包含两种形式:共享库和静态库. 共享库 共享库在程序运行时,为其提供所需要的函 ...

  7. 《手把手教你构建自己的 Linux 系统》学习笔记(7)

    目录 tee 命令的缺陷是什么?如何解决这个缺陷? /etc/ld.so.conf 文件的作用是什么? 动态链接和静态链接有什么不同? 动态编译 静态编译 共享库为什么会有版本?共享库的版本升级原理是 ...

  8. 《手把手教你构建自己的 Linux 系统》学习笔记(4)

    汇编链接器(Binutils) 这是一个软件包,这个软件包其实是一个工具集,里面含有了大量的用于汇编程序活着读取二进制文件相关的程序. CC 它是一条命令的别名,这条命令的作用是使用 GCC 的 C ...

  9. 《手把手教你构建自己的 Linux 系统》学习笔记(3)

    需要注意的是,制作操作系统权限全程都要用 root pushd 和 popd 为了方便目录管理,所以出现了这种两个命令,他们的原理就是利用堆栈来实现目录管理. 这两个命令,pushd 负责将指定的目录 ...

随机推荐

  1. mysq5.7l的下载与配置

    ---恢复内容开始--- mysql是一个开源免费的数据库,它属于oracle公司 下载地址:www.oracle.com 页面移动到下面可以找到这几个选项 还是移动到下面 如果你要下载的不是那四样中 ...

  2. 工具之cut

    转自http://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html cut:正如其名就是“剪”,和sed一样,一行为单位,对数据进行 ...

  3. OpenDJ入门 | 5分钟快速入门Forgerock DS

    本教程为了让大家快速体验,故不做深入讲解,详细内容请留意后续进阶教程 介绍 OpenDJ是一个目录服务器,它实现了各种轻量级目录访问协议和相关标准,包括完全符合LDAPv3,但也支持目录服务标记语言( ...

  4. OpenCV3入门(四)图像的基础操作

    1.访问图像像素 1)灰度图像 2)彩色图像 OpenCV中的颜色顺序是BGR而不是RGB. 访问图像的像素在OpenCV中就是访问Mat矩阵,常用的有三种方法. at定位符访问 Mat数据结构,操作 ...

  5. Flink 1.10 正式发布!——与Blink集成完成,集成Hive,K8S

    Apache Flink社区宣布Flink 1.10.0正式发布! 本次Release版本修复1.2K个问题,对Flink作业的整体性能和稳定性做了重大改进,同时增加了对K8S,Python的支持. ...

  6. HDU 6599 I Love Palindrome String (回文树+hash)

    题意 找如下子串的个数: (l,r)是回文串,并且(l,(l+r)/2)也是回文串 思路 本来写了个回文树+dfs+hash,由于用了map所以T了 后来发现既然该子串和该子串的前半部分都是回文串,所 ...

  7. I fullly understand why can not set "auto commit off" in sqlserver

    This is xxxxx Because MES guy mistaken , the data was wrong and made system error then. After that I ...

  8. c++算法:计算行列式的值(详细讲解)

    参考了:https://blog.csdn.net/u011885865/article/details/42032229 需要的基础:学过<线性代数>,知道行列式值的求法 基本公式:对于 ...

  9. 题解P1104生日

    \(\color{blue}{P1104 生日(题目传送门)}\) 这道题的大意是:给出n个人的出生日期,让我们按年龄(就是先比年份,再比月份和日期,这是常识好吧)大小来排序,如果相同则按输入顺序排序 ...

  10. Idea自定义代码块【学习笔记】

    前言 idea有一个自定义代码块的功能,可以自定义代码块,方便以后工作中减少一些重复操作,这里就简单记录一下idea好用的模板吧,现在有一个关于日志的模板,用于写一个ServiceImpl方法的时候, ...