嵌入式linux之內(nèi)核的makefile頂層目錄分析
內(nèi)核編譯步驟
make mrproper
make 100ask_imx6ull_defconfig
make zImage -j4
distclean,make clean區(qū)別
ake clean: 刪除大部分生成的文件但是保留配置文件和足夠的構(gòu)建外部模塊的構(gòu)建支持
make mrproper: 刪除所有生成的文件,配置和各種各樣備份的文件
make distclean: 相當于執(zhí)行一次make mrproper,然后再刪除編輯器備份和補丁文件
?刪除文件的范圍比較?:???????make clean < make mrproper < make distclean
vmlinux 、Image ,zImage 、uImage ?的區(qū)別
1、vmlinux 是編譯出來的最原始的內(nèi)核文件,是未壓縮的 ? ? ? ? ? ? 大小16M左右
2、Image 是 Linux 內(nèi)核鏡像文件,但是 Image 僅包含可執(zhí)行的二進制數(shù)據(jù),Image 就是使
用 objcopy 取消掉 vmlinux 中的一些其他信息,比如符號表什么的,Image 是沒有壓縮過
的,Image 保存在 arch/arm/boot 目錄下 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 大小大概在 12MB 左右
3、zImage 是經(jīng)過 gzip 壓縮后的 Image, 大小大概在 6MB 左右
4、uImage 是老版本 uboot 專用的鏡像文件,uImag 是在 zImage 前面加了一個長度為 64
字節(jié)的“頭”,這個頭信息描述了該鏡像文件的類型、加載位置、生成時間、大小等信息。但是
新的 uboot 已經(jīng)支持了 zImage 啟動!所以已經(jīng)很少用到 uImage 了,除非你用的很古老的 uboot
頂層目錄分析
頂層目錄我這邊分為研發(fā)過程中常用到的和普通的還有分件
常用到的有
arch 架構(gòu)相關(guān)目錄。
arch/arm/configs目錄下是不同平臺的默認配置文件:xxx_defconfig
arch/arm/boot/dts 目錄里面是對應(yīng)開發(fā)平臺的設(shè)備樹文件
arch/arm/boot 目錄下會保存編譯出來的 Image 和 zImage 鏡像文件
Documentation ? 文檔相關(guān)目錄
????????????????????????????如果要想了解 Linux 某個功能模塊或驅(qū)動架構(gòu)的功
????????????????????????????能,就可以在 Documentation 目錄中查找有沒有對應(yīng)的文檔
drivers 驅(qū)動相關(guān)目錄。
????????????????????????????比如 drivers/i2c 就是 I2C
????????????????????????????相關(guān)驅(qū)動目錄,drivers/gpio 就是 GPIO 相關(guān)的驅(qū)動目錄,這是我們開發(fā)????????????????????????????????的重點
普通的
include 頭文件相關(guān)目錄
lib 庫相關(guān)目錄
block 塊設(shè)備相關(guān)目錄。
crypto 加密相關(guān)目錄。
firmeare 固件相關(guān)目錄
fs 文件系統(tǒng)相關(guān)目錄。
init 初始化相關(guān)目錄
ipc 進程間通信相關(guān)目錄。
kernel 內(nèi)核相關(guān)目錄
mm 內(nèi)存管理相關(guān)目錄
net 網(wǎng)絡(luò)相關(guān)目錄
samples 例程相關(guān)目錄
scripts 腳本相關(guān)目錄
security 安全相關(guān)目錄
sound 音頻處理相關(guān)目錄
tools 工具相關(guān)目錄
usr 與 initramfs 相關(guān)的目錄,用于生成initramfs
virt 提供虛擬機技術(shù)(KVM)。
文件:
.config Linux 最終使用的配置文件
.gitignore git 工具相關(guān)文件
.mailmap 郵件列表
.missing-syscalls.d 編譯生成的依賴文件
.tmp_xx 編譯生成
.version 編譯生成的和版本相關(guān)
.vmlinux.cmd cmd 文件,用于連接生成 vmlinux。