一 kernel編譯系統概述

2021-09-30 20:33:20 字數 1491 閱讀 4037

核心的編譯系統主要由kconfig,makefile和一系列指令碼共同構成。其中kconfig主要用於配置核心的各項功能,它的結果決定了各個部分最終是被編譯成模組,編譯進核心還是不編譯。在核心頂層makefile的help可以看到有乙個專門用於配置核心的命令序列,後續我們會詳細介紹該部分內容。

頂層makefile是整個核心編譯系統的入口,所有make相關的命令都由它發起,並呼叫定義在其中或定義在其它檔案中的相應命令序列完成。它還定義了很多全域性的引數,環境變數,目標和依賴等。

除了頂層makefile之外,還有幾個定義在scripts目錄中的重要檔案,它們包括kbuild.include,makefile.lib和makefile.build。其中kbuild.include中主要定義了一些通用的變數和命令,如filechk,try-run,build,arg-check,if_changed等。makefile.lib中主要定義了編譯相關的flag和命令,如c_flags,a_flags,cmd_ld,cmd_objcopy,cmd_uimage等。makefile.build檔案是大部分目標最終呼叫的makefile,它會實際完成對目錄的遞迴呼叫和對原始檔的編譯工作。

由於頂層makefile檔案比較長,若從頭閱讀很容易陷入某些細節而打斷思路的連貫性。因此,我們通過對核心目標編譯的執行流程進行分析,看看linux到底是如何編譯出來的。讓我們先了解下核心makefile支援哪些功能,在linux根目錄下執行make help,會輸出以下內容(由於列印較長,這裡採用分屏顯示):

圖1.1

1.3它支援的目標大致包含以下幾部分:

(1)清理相關的目標

(2)配置相關的目標

(3)通用目標

(4)靜態分析目標

(5)kernel自測目標

(6)kernel打包相關的目標

(7)文字相關的目標

(8)架構相關的目標

(9)一些通用的選項

顯然,我們最關心的是linux核心的生成過程,故我們採用以下順序來組織本文,在涉及到架構相關的內容時,本文都以arm的aarch64為例。

2.配置相關目標

make menuconfig的執行過程分析

3.通用目標

(1)make vmlinux的執行過程分析

(2)make modules的執行過程分析

(3)其它通用目標的執行過程

4.清理目標的執行過程分析

5.通用命令列選項的用法介紹

(1)v選項介紹

(2)o選項介紹

(3)c選項介紹

6.makefile.build檔案的分析

編譯核心 kernel

學習linux就從核心編譯開始,現在就讓我們邁出第一步,下面記錄編譯過程 以下操作均在root下完成 1 準備工作 根據自己機器的硬體情況,選擇核心編譯配置選項,在這裡我使用的是預設配置 make menuconfig後直接儲存退出,生成.config檔案 具體配置可以參考金步國先生翻譯的資料 li...

快速編譯kernel

source build envsetup.sh lunch xx make showcommands bootimage build.log 通過引數showcommands 將編譯的命令顯示出來,比如原來編譯命令是make j4 但是編譯的細節沒看到,如果要顯示編譯的命令可以用引數showcom...

linux核心編譯kernel編譯

核心編譯的簡單流程 1.先uname r查詢當前系統的kernel版本 3.切換至解壓後的原始碼目錄下,sudo i 進入root模式 4.apt get install libncurses dev,安裝 make menuconfig時需要用到的庫檔案 5.執行make menuconfig,選...