4.5. 关于 SBU

许多人想在编译和安装各个软件包之前,了解这一过程大概需要多少时间。由于 Linux From Scratch 可以在许多不同系统上构建,我们无法直接给出估计时间。例如,最大的软件包 (Glibc) 在最快的系统上只要大约 20 分钟就能构建好,而在一些较慢的系统上需要 3 天!因此,我们不提供实际时间,而是以标准构建单位 (SBU) 衡量时间。

下面给出标准构建单位的测量方法。本书中构建的第一个软件包是第 5 章中的 Binutils,定义编译它需要的时间为标准构建单位,缩写为 SBU。其他软件包的编译时间用 SBU 为单位表示。

例如,考虑一个编译时间是 4.5 SBU 的软件包。如果在某个系统上,需要 10 分钟来编译和安装第一轮的 Binutils,那么大概需要 45 分钟才能构建这个软件包。幸运的是,多数软件包构建时间比 Binutils 少。

一般来说,SBU 不是完全准确的。这是由于它受到许多因素的影响,包括宿主系统的 GCC 版本。SBU 只能用来估计安装一个软件包可能需要的时间,估计结果的误差在个别情况下可能达到几十分钟。

[注意]

注意

对于许多拥有多个处理器 (或处理器核心) 的现代系统,可以显著缩短软件包的编译时间,设置环境变量或者直接告诉 make 命令有多少个可用的处理器,即可进行并行构建。例如,一块 Intel i5-6500 CPU 可以支持 4 个同时运行的进程,可以设定:

export MAKEFLAGS='-j4'

或者直接用以下命令构建:

make -j4

用这种方式使用多个处理器时,SBU 值将会发生变化,有时甚至变得比正常值还大。某些情况下,还会导致 make 命令失败。另外,分析构建过程的的输出也会变得困难,因为不同进程的输出行会交错在一起。如果在构建过程中出现问题,需要使用单处理器进行构建,才能更好地分析错误消息。