4.5. 关于 SBUs

在着手之前,不少人想知道编译和安装一个软件包到底需要多长的时间。因为 Linux From Scratch 能够运行于众多的硬件上,所以具体的编译时间无法一概而论。举一个简单的例子:在最快的系统上,编译最大的软件包(Glibc)需要约 20 分钟,但在慢的系统上有可能需要 3 天!所以,这里使用标准构建单元(SBU)来代替具体的编译时间。

SBU 衡量方式如下。我们编译的第一个软件包是 第 5 章 的 Binutils。将这个软件包在编译时所需要的时间,作为标准构建单元(SBU)。其它软件的构建时间,都以其为标准进行比较。

举个例子,假如编译某个软件耗时 4.5 SBUs。这意味着如果这个系统,在编译 Binutils 需要 10 分钟,大概需要 45 分钟来构建此软件包。很幸运,大部分的系统在生成 Binutils 时花的时间都要比这个系统要短。

一般来说,SBU 的结果并不完全准确,因为影响编译的因素太多,包括宿主机系统中 GCC 的版本也会影响到。所以更多的时候,这仅仅是提供一个编译和安装时间的预估。然而,在某些情况下,这个数字可能偏差约十几分钟。

[注意]

注意

对于大多数带有多个处理器(或内核)的现代操作系统而言,可以通过设置环境变量或者是告知 make 程序具体可用的处理器数目,通过「并行 make」来减少编译的时间。例如,对于 Core2Duo 可以通过以下参数实现两个处理器同时编译:

export MAKEFLAGS='-j 2'

或者直接这样来构建:

make -j2

以该方式使用多处理器时,SBU 值可能比书中的正常值还要大。某些情况下,make 过程仅仅是简单的就失败了。分析错误日志也十分困难:因为不同处理器之间的执行路线是交错的。如果你在构建过程中遇到了问题,为了正确分析错误信息,最好返回单处理器。