1、名詞說明
1)主系統
制作Linux系統并不是在一無所有的裸機上完成的,需要一個幫助我們制作系統的系統,這個系統就稱為“主系統”。我們制作的系統就是依靠這個主系統來逐漸完成的,是以主系統的選擇非常重要。
2)目标系統
目标系統就是我們要完成的系統
3)臨時系統
在制作目标系統 的過程中會有一個小型的過渡系統,這個系統在輔助制作完成目标系統後就不再使用了,是以稱為臨時系統。
4)編譯工具
将Binutils(彙編工具)、GCC(編譯器)合稱為編譯工具。
5)工具鍊
将Binutils(彙編工具)、GCC(編譯器)和GLibc(标準C函數庫)的組合稱為工具鍊,有時候也會将一些需要用到的函數庫作為工具鍊的一部分,使用工具鍊生成的可執行檔案總是使用該工具鍊中的函數庫。
在整個制作過程中,各個階段都會産生工具鍊,為了能清楚并準确的表達某個工具鍊,對各個階段的工具鍊名稱做如下規定:
原工具鍊:主系統的工具鍊
預工具鍊:用于生成臨時工具鍊的工具鍊
臨時工具鍊:用于生成臨時系統的工具鍊
目标工具鍊:用于生成目标系統的工具鍊
6)輔助指令
在編譯軟體包的過程中,除了工具鍊以外還需要一些指令的參與,如make,這些指令合稱為輔助指令
7)工具鍊環境
将工具鍊連同輔助指令合稱為工具鍊環境,不同的階段會出現不同的組合,下面對各個階段的工具鍊環境的稱呼做如下規定:
預工具鍊環境:預工具鍊+主系統的輔助指令及基本函數庫
臨時工具鍊環境:臨時工具鍊+臨時系統中的輔助指令及基本函數庫
目标工具鍊環境:目标工具鍊+目标系統中的輔助指令及基本函數庫
8)運作環境
在一個運作的系統中可以存在多個不同的環境,這些環境中有各自的根目錄及環境設定,這樣的環境稱為運作環境。在制作過程中各個階段會處于不同的運作環境,這裡對稱呼做如下規定
主系統運作環境:-----
目标系統運作環境:目标系統所在目錄為根目錄的運作環境
9)純淨度
這裡的純淨度并不是一個計量機關,而是用于表達某系統與其它系統的相關性,如果一個系統的運作依賴于另一個系統,那麼這個系統是不純淨的。我們的目标是制作一個完全獨立運作的系統。而且不管主系統是什麼,隻要目标系統制作出來了,那麼目标系統就不會因為主系統的不同而有差異。
10)頭檔案
用于編譯的一類檔案,一般以.h作為檔案的字尾,存放了函數的接口描述、結構體資訊等程式設計相關的内容。
2、源代碼的編譯過程