Linux核心的編譯與配置

2021-07-24 10:21:39 字數 1800 閱讀 6103

在編譯核心之前首先得先配置核心,通常是敲入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檔案,與具體體系結...