久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Linux內(nèi)核配置Kconfig語法

 閱讀擴(kuò)展視野 2017-10-20

何為Kconfig 它的作用是什么

內(nèi)核源碼編譯過程

頂層目錄

  1. 遍歷每個(gè)源碼目錄(或配置指定的源碼目錄)Makefile
  2. 每個(gè)目錄的Makefile 會根據(jù)Kconfig來定制要編譯對象
  3. 回到頂層目錄的Makeifle執(zhí)行編譯

那么我們就得出各個(gè)文件的作用

Kconfig ---> (每個(gè)源碼目錄下)提供選項(xiàng)
.config ---> (源碼頂層目錄下)保存選擇結(jié)果
Makefile---> (每個(gè)源碼目錄下)根據(jù).config中的內(nèi)容來告知編譯系統(tǒng)如何編譯
  • 1
  • 2
  • 3

說到底,,Kconfig就是配置哪些文件編譯,那些文件不用編譯,。后期linux內(nèi)核都做出了如下的圖形界面,,但由于要進(jìn)行Linux內(nèi)核驅(qū)動開發(fā),需要向?qū)Ⅱ?qū)動的代碼添加到Makefile中一起編譯,,所以Kconfig的一些語法也該了解,,于是有了這篇文章,。
這里寫圖片描述

基本使用方法

我們以簡單的單選項(xiàng)為案例來演示
假比,,我們做好了一個(gè)驅(qū)動,需要將選項(xiàng)加入到內(nèi)核的編譯選項(xiàng)中,,可以按以下步驟操作:

第一步 配置Kconfig

在driver目錄下新建一個(gè)目錄

mkdir driver/test 
  • 1

進(jìn)入test目錄,,創(chuàng)建Kconfig文件
這里寫圖片描述
這里定義了一個(gè)TEST的句柄,Kconfig可以通過這個(gè)句柄來控制Makefile中是否編譯,,”Test driver”是顯示在終端的名稱,。
具體的語法在Kconfig語法簡介中介紹。

第二步 配置Makefile

在同樣的目錄中,,新建一個(gè)Makefile
Makfile

Obj-$(CONFIG_選項(xiàng)名) += xxx.o 
/*當(dāng)CONFIG_選項(xiàng)名=y時(shí),,表示對應(yīng)目錄下的xxx.c將被編譯進(jìn)內(nèi)核
當(dāng)CONFIG_選項(xiàng)名=m時(shí)對應(yīng)目錄下的xxx.c將被編譯成模塊*/
  • 1
  • 2
  • 3

第三步 配置上層目錄的Makefile與Kconfig

在上一層目錄的Kconfig中

這里寫圖片描述
表示將test文件夾中的Kconfig加入搜尋目錄

在上一層目錄的Makefile中

這里寫圖片描述

結(jié)果,運(yùn)行根目錄的.config查看結(jié)果
這里寫圖片描述

Kconfig語法簡介

單一選項(xiàng)

總體原則:每一個(gè)config就是一個(gè)選項(xiàng),,最上面跟著控制句柄,,下面則是對這個(gè)選項(xiàng)的配置,如選項(xiàng)名是什么,,依賴什么,,選中這個(gè)后同時(shí)會選擇什么。

config CPU_S5PC100
    bool "選項(xiàng)名"
    select S5P_EXT_INT
    select SAMSUNG_DMADEV
    help
      Enable S5PC100 CPU support
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

config —> 選項(xiàng)
CPU_S5PC100 —>句柄,,可用于控制Makefile 選擇編譯方式
bool —>選擇可能:TRUE選中,、FALSE不選 選中則編譯,不選中則不編譯,。
如果后面沒有字符串名稱,,則表示其不會出現(xiàn)在選擇軟件列表中
select —> 當(dāng)前選項(xiàng)選中后則select后指定的選項(xiàng)自動被選擇

depends on ARM || BLACKFIN || MIPS || COLDFIRE
  • 1

depend on 依賴,后面的四個(gè)選擇其中至少一個(gè)被選擇,,這個(gè)選項(xiàng)才能被選

config DM9000
    tristate "DM9000 support"
  • 1
  • 2

tristate —> 選中并編譯進(jìn)內(nèi)核,、不選編譯成模塊

運(yùn)行結(jié)果:< M > test

選項(xiàng)為數(shù)字

config ARM_DMA_IOMMU_ALIGNMENT
    int "Maximum PAGE_SIZE order of alignment for DMA IOMMU buffers" ---->該選項(xiàng)是一個(gè)整型值
    range 4 9 ---->該選項(xiàng)的范圍值
    default 8 ---->該選項(xiàng)的默認(rèn)值
    help
      DMA mapping framework by default aligns all buffers to the smallest
      ...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4-8為這個(gè)數(shù)字的范圍,,運(yùn)行結(jié)果
這里寫圖片描述

這里的defult其實(shí)也可以用在bool中

config STACKTRACE_SUPPORT
    bool    --->該選項(xiàng)可以選中或不選,且不會出現(xiàn)在選擇列表中
    default y ---->表示缺省情況是選中
  • 1
  • 2
  • 3

if..endif

if ARCH_S5PC100 --->如果ARCH_S5PC100選項(xiàng)選中了,,則在endif范圍內(nèi)的選項(xiàng)才會被選

config CPU_S5PC100
    bool "選項(xiàng)名"
    select S5P_EXT_INT
    select SAMSUNG_DMADEV
    help
      Enable S5PC100 CPU support

endif

舉個(gè)例子,,如果CPU沒有選擇使用多核CPU,則不會出現(xiàn)CPU個(gè)數(shù)的選項(xiàng),。

choice多個(gè)選項(xiàng)

choice      --->表示選擇列表
    prompt "Default I/O scheduler"         //主目錄名字
    default DEFAULT_CFQ                    //默認(rèn)CFQ
    help
      Select the I/O scheduler which will be used by default for all
      block devices.

    config DEFAULT_DEADLINE
        bool "Deadline" if IOSCHED_DEADLINE=y 

    config DEFAULT_CFQ
        bool "CFQ" if IOSCHED_CFQ=y

    config DEFAULT_NOOP
        bool "No-op"

endchoice

menu與menuconfig

menu的用法

menu "Boot options"  ----> menu表示該選項(xiàng)是不可選的菜單,,其后是在選擇列表的菜單名

config USE_OF
    bool "Flattened Device Tree support"
    select IRQ_DOMAIN
    select OF
    select OF_EARLY_FLATTREE
    help
      Include support for flattened device tree machine descriptions.
....

endmenu     ----> menu菜單結(jié)束

menu指的是不可編輯的menu,而menuconfig則是帶選項(xiàng)的menu
menu和choice的區(qū)別
menu 可以多選 choice 是單項(xiàng)選擇題

menuconfig的用法

menuconfig MODULES ---> menuconfig表示MODULE是一個(gè)可選菜單,,其選中后是CONFIG_MODULES
    bool "菜單名"
if MODULES
...
endif # MODULES

說到底,,menconfig 就是一個(gè)帶選項(xiàng)的菜單,在下面需要用bool判斷一下,,選擇成立后,,進(jìn)入if …endif 中間得空間。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多