4.5. 关于 SBU

不少人在开始做之前都想要知道,编译和安装一个软件包到底需要多长的时间。实在是抱歉,因为 Linux From Scratch 能够运行于众多的硬件上,所以具体的编译时间无法一概而论。举一个简单的例子:在最快的硬件设备上,编译那种非常巨大的软件包(如 Glibc)可能仅需要 20 分钟,在那种很慢很慢的硬件上呢,这个时间可能就变成 3 天了。所以,这里使用 SBU(标准编译单位)来指代具体的编译时间。

SBU 衡量方式如下。我们以第五章编译的第一个软件包 Binutils 所用时间作为一个标准编译单位(SBU),其它软件的生成时间都以其为标准进行比较。

例如,假如编译一个软件耗时 4.5 SBU,而编译安装初代 Binutils 用时 10 分钟的话,那么编译这个软件包大约耗时 45 分钟。当然啦,对于大多数人来说,编译 Binutils 可用不了 10 分钟那么久。

一般来说,SBU 的结果并不准确,因为影响编译的因素太多,例如宿主机的 GCC 版本的不同就会改变编译的时间。所以更多的时候,这仅仅是提供一个编译和安装时间的预估,有些情况下,预估时间和实际编译时间可能相差几十分钟。

[Note]

注意

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

export MAKEFLAGS='-j 2'

或者直接这样编译:

make -j2

当使用多处理器同时编译,SBU 的结果可能和本书提供的建议值有所不同。在一些情况下,使用多处理器同时编译可能失败,分析错误日志变得异常困难:因为不同处理器之间的执行路线是交错的。如果你在编译的时候遇到问题,那么请回过来使用单处理器编译,以正确地查看错误消息。