之前在做OS實驗跟嵌入式時,為了編譯核心有用到make menuconfig。
雖然大家都照著投影片做,不過我認為編譯核心應該要懂得一些技巧。
所以就找了些資料分享給大家!

「 [ ] 」(excludes)表示該選項沒有被選取,編譯後的 kernel 將不會有此功能。
「 < > 」(module capable)
表示該選項沒有被選取,而且是可以被當做是 module,可以
在開機之後另外載入的。
「 [*] 」(built-in)表示該選項有被選取,編譯後的 kernel 包含此功能,而且該功
能會被編入 kernel image 中,這意味著在 kernel 被載入時該功能就已經存在,有些功
能是一定要在 kernel 被載入時就存在的,例如讀取 filesystem,因為 kernel 無法從
它認不出的 filesystem 裡讀取檔案。雖然將各能選成內建可以將整個 kernel 的功能包
成一個 kernel image 檔,但它也會造成執行時一些不必要的記憶體以及初始化時間的浪
費。
「<M> 」(module)
表示該選項有被選取,而且是被編譯成 module 的形式,它會存放 在 filesystem中,並在 kernel 被載入後才動態地載入。編譯成 module 的優點是減少 kernel image 的空間、加快開機時間,以及方便開發 kernel 功能,因為 module 是在 開機後才被載入,每次修改該功能時只需要重新編譯並載入 module ,而不需要重新編譯 整個 kernel 並且重新開機。
知道這些技巧後,我們在編譯核心時就不會浪費多餘的資源了!

沒有留言:
張貼留言