在編譯核心之前首先得先配置核心,通常是敲入make menuconfig來配置。(不過嵌入式開發的時候我好像挺少用到的)
linux核心的配置系統由下面3個部分組成
簡而言之:kconfig中定義該config是否開啟,在makefile中依據這個config是否開啟來進行相應的編譯。
obj-$(config) +=foo.o config =y or n or m
對於makefile 的簡易介紹
目標定義
e.g: obj-y += foo.o
表示要由foo.c或者foo.s檔案編譯得到foo.o並鏈結進核心,obj-m表示該檔案要作為模組編譯,obj-n形式的目標不會被編譯。
多檔案模板的定義多個檔案組合編譯成乙個模組,需要採用模組名加-y的字尾來定義模板的組成檔案
e.g:
obj-$(config1) += ext2.o #需要編譯ext2模組與否
ext2-y := balloc.o dir.o file.o .......#如果需要的話,編譯該模組需要的檔案
ext2-$(config2) += acl.o #根據配置項config2,ext2還需要鏈結的檔案
ext2-$(config3) += xattr.o xattr_trusted.o #根據配置項config3, ext2還需要鏈結的檔案
目錄層次的迭代obj-$(config) += ext2/ #當config為y或者m的時候,kbuild會把ext2目錄列入向下迭代的目標中。這個在編譯的時候,方便將編譯命令作用到整個目錄(包括目錄下的子目錄)。
kconfig的語法簡易介紹:(之後再研究,現在感覺能讀懂就行~)
配置選項
大多數的核心配置選項都對應著kconfig中的乙個配置選項(config)
e.g:
config configname
bool "module version support"
#bool 資料的型別, 後面的是輸入提示
help
.....#幫助資訊
在核心中新增驅動**目錄和子目錄的例項在核心中增加目錄和子目錄,需要為相應的新增目錄建立makefile和kconfig檔案,而新增目錄的父目錄中的kconfig和makefile也需要修改。
e.g:新增乙個test目錄,test有乙個子目錄testuser.
1. 需要在新增的test目錄下加入kconfig檔案
2. 為了使該kconfig生效需要修改test父目錄的kconfig,增加:
source "drivers/test/kconfig"
3. 在新增的test目錄下,加入makefile,該makefile中需要有對於testuser的子目錄的遍歷,這樣編譯的時候才可以把子目錄也編譯了:obj-$(config1) += testuser/
4. 同時testuser目錄中也需要加入自己的編譯的makefile
5. 為了編譯的時候能編譯整個的test目錄,所以需要在test目錄下的makefile裡面新增:
obj-$(config2) += test/
6. 以上為新增乙個目錄需要注意的東西
小工具securecrt這個軟體在公司也用,兩個用處:
1. 可以在windows視窗通過ssh來訪問虛擬機器裡面的linux系統,並進行命令的操作
(需要在linux系統裡面安裝ssh的client和server)
2. 可以作為串列埠工具
Linux 核心配置與編譯
嵌入式系統的乙個很重要的特性就是可移植可裁剪配置。這篇博文主要簡單總結下在x86體系下配置編譯核心的過程。取得原始碼後的步驟就是配置核心。使用make menuconfig命令,配置成功後儲存會在核心源 目錄下生成乙個.config檔案。這個檔案是隱藏的,需要用ls a命令才可看到。配置選項比較多,...
linux核心配置與編譯
linux核心配置與編譯 1.清除臨時檔案 1.make clean 刪除產生的檔案,但儲存配置。2.make mrproper 刪除產生的檔案同時刪除配置 3.make distclean 刪除mrproper並且刪除補丁之類的。2 對確定的目標系統的軟硬體配置情況。比如cpu 網絡卡型號,所需支...
Linux核心配置與編譯
核心的配置和編譯大致涉及三類主要檔案 kconfig config makefile。它們之間的關係大致可用下圖描述 1.kconfig 詳細內容可參見kbuild kconfig language.txt 核心配置選項的原始檔。arch arch kconfig是主kconfig檔案,與具體體系結...