自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux內(nèi)核中Kconfig文檔有什么作用?

運(yùn)維 系統(tǒng)運(yùn)維
Kconfig就是對應(yīng)著內(nèi)核的配置菜單。假如要想添加新的驅(qū)動(dòng)到內(nèi)核的源碼中,能夠修改Kconfig,這樣就能夠選擇這個(gè)驅(qū)動(dòng),假如想使這個(gè)驅(qū)動(dòng)被編譯,要修改Makefile。

內(nèi)核源碼樹的目錄下都有兩個(gè)文檔Kconfig(2.4版本是Config.in)和Makefile。分布到各目錄的Kconfig構(gòu)成了一個(gè)分布式的內(nèi)核配置數(shù)據(jù)庫,每個(gè)Kconfig分別描述了所屬目錄源文檔相關(guān)的內(nèi)核配置菜單。在內(nèi)核配置make menuconfig(或xconfig等)時(shí),從Kconfig中讀出菜單,用戶選擇后保存到。config的內(nèi)核配置文檔中。 在內(nèi)核編譯時(shí),主Makefile調(diào)用這個(gè)。config,就知道了用戶的選擇。

  上面的內(nèi)容說明了,Kconfig就是對應(yīng)著內(nèi)核的配置菜單。假如要想添加新的驅(qū)動(dòng)到內(nèi)核的源碼中,能夠修改Kconfig,這樣就能夠選擇這個(gè)驅(qū)動(dòng),假如想使這個(gè)驅(qū)動(dòng)被編譯,要修改Makefile。

  因此添加新的驅(qū)動(dòng)時(shí)需要修改的文檔有兩種(注意不只是兩個(gè))

  *Kconfig

  *Makefile

  要想知道怎么修改這兩種文檔,就要知道兩種文檔的語法結(jié)構(gòu)。

  First:Kconfig

  每個(gè)菜單都有一個(gè)關(guān)鍵字標(biāo)識(shí),最常見的就是config。

  語法:

  config

  symbol是個(gè)新的標(biāo)記的菜單項(xiàng),options是在這個(gè)新的菜單項(xiàng)下的屬性和選項(xiàng)

  其中options部分有:

  1、類型定義:

  每個(gè)config菜單項(xiàng)都要有類型定義,bool布爾類型、 tristate三態(tài):內(nèi)建、模塊、移除 string字符串、 hex十六進(jìn)制、 integer整型

  例如config HELLO_MODULE

  bool "hello test module"

  bool類型的只能選中或不選中,tristate類型的菜單項(xiàng)多了編譯成內(nèi)核模塊的選項(xiàng),假如選擇編譯成內(nèi)核模塊,則會(huì)在。config中生成一個(gè)CONFIG_HELLO_MODULE=m的配置,假如選擇內(nèi)建,就是直接編譯成內(nèi)核影響,就會(huì)在。config中生成一個(gè)CONFIG_HELLO_MODULE=y的配置。

  2、依賴型定義depends on或requires

  指此菜單的出現(xiàn)和否依賴于另一個(gè)定義

  config HELLO_MODULE

  bool "hello test module"

  depends on ARCH_PXA

  這個(gè)例子表明HELLO_MODULE這個(gè)菜單項(xiàng)只對XScale處理器有效。

  3、幫助性定義

  只是增加幫助用關(guān)鍵字help或---help---

  Second:內(nèi)核的Makefile

  在linux2.6.x/Documentation/kbuild目錄下有周詳?shù)慕榻B有關(guān)kernel makefile的知識(shí)。

  內(nèi)核的Makefile分為5個(gè)組成部分:

  Makefile 最頂層的Makefile

  .config 內(nèi)核的當(dāng)前配置文檔,編譯時(shí)成為頂層Makefile的一部分

  arch/$(ARCH)/Makefile 和體系結(jié)構(gòu)相關(guān)的Makefile

  s/ Makefile.* 一些Makefile的通用規(guī)則

  kbuild Makefile 各級目錄下的大概約500個(gè)文檔,編譯時(shí)根據(jù)上層Makefile傳下來的宏定義和其他編譯規(guī)則,將源代碼編譯成模塊或編入內(nèi)核。

  頂層的Makefile文檔讀取 .config文檔的內(nèi)容,并總體上負(fù)責(zé)build內(nèi)核和模塊。Arch Makefile則提供補(bǔ)充體系結(jié)構(gòu)相關(guān)的信息。 s目錄下的Makefile文檔包含了任何用來根據(jù)kbuild Makefile 構(gòu)建內(nèi)核所需的定義和規(guī)則。

  (其中。config的內(nèi)容是在make menuconfig的時(shí)候,通過Kconfig文檔配置的結(jié)果)

  舉個(gè)例子:

  假設(shè)想把自己寫的一個(gè)flash的驅(qū)動(dòng)程式加載到工程中,而且能夠通過menuconfig配置內(nèi)核時(shí)選擇該驅(qū)動(dòng)該怎么辦呢?能夠分三步:

  第一:將您寫的flashtest.c 文檔添加到/driver/mtd/maps/ 目錄下。

  第二:修改/driver/mtd/maps目錄下的kconfig文檔:

  config MTD_flashtest

  tristate “ap71 flash"

  這樣當(dāng)make menuconfig時(shí) ,將會(huì)出現(xiàn) ap71 flash選項(xiàng)。

  第三:修改該目錄下makefile文檔。

  添加如下內(nèi)容:obj-$(CONFIG_MTD_flashtest) += flashtest.o

  這樣,當(dāng)您運(yùn)行make menucofnig時(shí),您將發(fā)現(xiàn)ap71 flash選項(xiàng),假如您選擇了此項(xiàng)。該選擇就會(huì)保存在。config文檔中。當(dāng)您編譯內(nèi)核時(shí),將會(huì)讀取。config文檔,當(dāng)發(fā)現(xiàn)ap71 flash 選項(xiàng)為yes 時(shí),系統(tǒng)在調(diào)用/driver/mtd/maps/下的makefile 時(shí),將會(huì)把 flashtest.o 加入到內(nèi)核中。即可達(dá)到您的目的。

責(zé)任編輯:趙寧寧
相關(guān)推薦

2019-08-15 16:00:21

Linux內(nèi)核Kconfig

2011-08-19 08:58:34

Linux

2021-12-22 22:32:48

鴻蒙HarmonyOS應(yīng)用

2021-12-27 16:24:11

鴻蒙HarmonyOS應(yīng)用

2023-03-28 07:03:15

gRPCMetadata

2018-07-20 14:00:51

LinuxmacOS內(nèi)核

2021-01-21 17:27:05

區(qū)塊鏈加密貨幣穩(wěn)定幣

2022-05-16 23:10:54

穩(wěn)定幣區(qū)塊鏈加密貨幣

2023-12-07 07:08:09

Angular函數(shù)

2021-07-06 07:27:45

React元素屬性

2022-10-12 14:29:18

商業(yè)智能工具數(shù)據(jù)

2009-12-17 15:18:47

2011-08-22 13:38:41

Linux變量

2023-05-04 10:27:54

數(shù)據(jù)安全文檔管理

2009-10-29 09:41:01

Linux內(nèi)核DeviceMappe

2020-12-15 09:08:40

LinuxShell

2009-03-23 09:50:36

Linux內(nèi)核華人

2011-08-16 16:20:33

Linuxkconfigmakefile

2021-02-02 07:37:39

NextTickvueDOM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)