日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核defconfig在哪,Linux内核根目录中的配置文件.config中包含了许多宏定义,...

發布時間:2024/4/19 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核defconfig在哪,Linux内核根目录中的配置文件.config中包含了许多宏定义,... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

滿意答案

大大bigone

推薦于 2017.11.22

采納率:52%????等級:9

已幫助:813人

一、Linux內核的配置系統由三個部分組成,分別是:

1、Makefile:分布在 Linux 內核源代碼根目錄及各層目錄中,定義 Linux 內核的編譯規則;

2、配置文件(config.in(2.4內核,2.6內核)):給用戶提供配置選擇的功能;

3、配置工具:包括配置命令解釋器(對配置腳本中使用的配置命令進行解釋)和配置用戶界面(提供基于字符界面、基于 Ncurses 圖形界面以及基于 Xwindows 圖形界面的用戶配置界面,各自對應于 Make config、Make menuconfig 和 make xconfig)。這些配置工具都是使用腳本語言,如 Tcl/TK、Perl 編寫的(也包含一些用 C 編寫的代碼)。本文并不是對配置系統本身進行分析,而是介紹如何使用配置系統。所以,除非是配置系統的維護者,一般的內核開發者無須了解它們的原理,只需要知道如何編寫 Makefile 和配置文件就可以。

二、Make menuconfig過程分析

1、scripts文件夾存放的是跟make menuconfig配置界面的圖形繪制相關的文件,我們作為使用者無需關心這個文件夾的內容

2、讀取arch/arch/$ARCH/Kconfig以及各子目錄下的Kcondig文件,生成配置條目。

$ARCH由linux內核根目錄下的makefile文件決定

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

Kconfig文件中為配置信息的宏定義,與我們在make menuconfig圖形界面看到的信息一致。

例如:

config CPU_S3C2410_DMA

bool

depends on S3C2410_DMA && (CPU_S3C2410 || CPU_S3C2442)

default y if CPU_S3C2410 || CPU_S3C2442

help

DMA device selection for S3C2410 and compatible CPUs

因此,Kconfig文件很重要的作用就是:定義配置宏、相關依賴關系、幫助信息

3、讀取內核根目錄下.config文件,生成配置選項:[*]編譯進內核 [M]編譯為模塊 [ ]不編譯

arch/arm/configs/文件夾下存放了一些配置模板

我們可以通過cp /arch/arm/configs/xx_defconfig .config來使用這些配置模板

通過圖形界面變更配置選項會自動更新到.config文件中

make disclean 會刪除.config

4、編譯過程根據.config生成 Linux內核根目錄下的 include/config/auto.conf文件

CONFIG_EEPROM_93CX6=m

CONFIG_DM9000=y

根目錄Makefile以及子目錄的Makefile根據auto.conf生成編譯條件

obj-$(CONFIG_DM9000) += dm9000.o //obj-m += dm9000.o

5、編譯過程根據.config生成Linux內核根目錄下的 include/linux/autoconf.h文件

.config 或 auto.conf 中定義要編譯為 m 模塊的項,如:

CONFIG_DEBUG_NX_TEST=m

在 autoconf.h 中會被定義為:

#define CONFIG_DEBUG_NX_TEST_MODULE 1

.config或auto.conf 中定義為編譯為 y 的選項,如:

CONFIG_DM9000= y

在 autoconf.h 中會被定義為:

#define CONFIG_DM9000 1

autoconf.h中是.config或者auto.conf中配置信息的另一種體現形式,它是站在源碼的角度,供源碼使用的C語言宏定義。

6、總結

我們在使用make menuconfig時,首先會確定架構arch,然后讀取arch目錄的Kconfig中的配置宏定義,生成編譯條目,然后讀取Linux內核根目錄下的.config選項, 將.config中的配置信息顯示在圖形界面上[*] [M] or []。我們在圖形界面中更改配置選項會自動保存到.config文件中。編譯過程根據.config隨后生成auto.conf文件,它決定了makefile中各個文件的編譯類型,靜態編譯進內核、編譯成模塊、不編譯;同時生成autoconf.h,它以C語言宏定義的形式表達了 各個文件是否被編譯,源碼中會判斷某文件是否被編譯進行不同的處理。

三、將自定義文件添加進內核配置系統

1、修改文件目錄下Kconfig文件

添加:

config HELLO

tristate "just a test hello"

default y

---help---

This is a test

//tristate 或 bool 表示可選擇種類數量3[*][M][ ]、2

// "just a test hello"將作為標題顯示在配置的圖形界面

2、修改文件目錄下makefile文件

obj-$(CONFIG_HELLO) += hello_drv.o

3、make menuconfig 我們會在字符設備驅動的界面看到 ust a test hello 并且默認編譯進內核

4、make編譯內核發現

autoconfig.h 自動添加 #define CONFIG_HELLO 1

auto.conf 自動添加 CONFIG_HELLO=y

01分享舉報

總結

以上是生活随笔為你收集整理的Linux内核defconfig在哪,Linux内核根目录中的配置文件.config中包含了许多宏定义,...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。