《Linux From Scratch》第二部分:準備構建 第四章:最後的準備- 4.5. 關於 SBU
不少人在開始做之前都想要知道,編譯和安裝一個軟件包到底需要多長的時間。實在是抱歉,因為 Linux From Scratch 能夠運行於眾多的硬件上,所以具體的編譯時間無法一概而論。舉一個簡單的例子:在最快的硬件設備上,編譯那種非常巨大的軟件包(如 Glibc)可能僅需要 20 分鍾,在那種很慢很慢的硬件上呢,這個時間可能就變成 3 天了。所以,這裏使用 SBU(標準編譯單位)來指代具體的編譯時間。
SBU 衡量方式如下。我們以第五章編譯的第一個軟件包 Binutils 所用時間作為一個標準編譯單位(SBU),其它軟件的生成時間都以其為標準進行比較。
例如,假如編譯一個軟件耗時 4.5 SBU,而編譯安裝初代 Binutils 用時 10 分鍾的話,那麼編譯這個軟件包大約耗時 45 分鍾。當然啦,對於大多數人來說,編譯 Binutils 可用不了 10 分鍾那麼久。
一般來說,SBU 的結果並不準確,因為影響編譯的因素太多,例如宿主機的 GCC 版本的不同就會改變編譯的時間。所以更多的時候,這僅僅是提供一個編譯和安裝時間的預估,有些情況下,預估時間和實際編譯時間可能相差幾十分鍾。
![[Note]](https://res.3425.com.cn/aliyunqi/20171107/1510036466199.png)
注意
對於大多數帶有多個處理器(或內核)的現代操作係統而言,可以通過設置環境變量或者是告知 make 程序具體可用的處理器數目,通過“並行編譯”來減少編譯的時間。例如,對於 Core2Duo 可以通過以下參數實現兩個處理器同時編譯:
export MAKEFLAGS='-j 2'
或者直接這樣編譯:
make -j2
當使用多處理器同時編譯,SBU 的結果可能和本書提供的建議值有所不同。在一些情況下,使用多處理器同時編譯可能失敗,分析錯誤日誌變得異常困難:因為不同處理器之間的執行路線是交錯的。如果你在編譯的時候遇到問題,那麼請回過來使用單處理器編譯,以正確地查看錯誤消息。
創建者:Gerard Beekmans
編輯者:Matthew Burgess 和 Armin K.
翻譯團隊:LCTT
譯者/校對:dongfengweixiao,wxy
最後更新:2017-11-07 14:34:27