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 命令有多少个可用的处理器,都可以进行并行编译。例如, 在一个 Core2Duo 系统中,可以设置下列环境变量, 以支持用两个并行的进程进行编译:

export MAKEFLAGS='-j 2'

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

make -j2

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