linux原始碼「 config」檔案分析

2021-09-06 14:44:26 字數 3396 閱讀 1477

一、.config檔案概述

.config檔案是linux核心配置檔案,當執行#make uimage編譯生成核心時,頂層的makefile會讀取.config檔案的內容,根據這個配置檔案來編譯所定製的核心。

二、.config檔案關聯

1 檔案關聯圖

以config_dm9000為例進行說明。 

在#make menuconfig中選擇使用config_dm9000,然後在配置檔案.config中就會有對應的項設定成為y或者m。

在#make uimage編譯核心時,頂層makefile會根據.config的配置生成兩個配置檔案:

include/linux/autoconf.h

include/config/auto.conf

其中,autoconf.h是c語言標頭檔案主要影響c檔案的編譯。

auto.conf會被頂層makefile所包含,然後傳遞到底層makefile中從而影響到底層檔案的編譯。

2 關聯檔案部分內容展示

1、.config#

# automatically generated make config: don

't edit

# linux kernel version: 

2.6.

30.4

# wed apr  

216:

21:56

2014#

config_arm=y

config_sys_supports_apm_emulation=y

config_generic_gpio=y

# config_phylib 

is not 

setconfig_net_ethernet=y

config_mii=y

# config_ax88796 

is not 

set# config_smc91x 

is not 

setconfig_dm9000=y

config_dm9000_debuglevel=

4# config_dm9000_force_******_phy_poll 

is not 

set# config_ethoc 

is not 

set# config_smc911x 

is not 

set# config_smsc911x 

is not 

set2、include/linux/autoconf.h

* automatically generated c config * wed apr  2 16:22:04 2014

: don't edit

* linux kernel version: 2.6.30.4

*/#define autoconf_included

#define config_video_v4l1_compat 1

#define config_hid_cherry 1

#define config_frame_warn 1024

#define config_cpu_s3c244x 1

#define config_usb_gspca_t613 1

#define config_cpu_copy_v4wb 1

#define config_mmc_s3c 1

#define config_usb_gspca_ov519 1

#define

config_dm9000 1

#define config_s3c2410_clock 1

#define config_rtc_drv_s3c 1

可以看到這個檔案是自動生成的,而且有巨集定義config_dm9000,通過這個巨集定義就可以影響到包含到該巨集的c檔案。

3、arch/blackfin/mach-bf533/boards/h8606.c

*  driver needs to know address, irq and flag pin.

*/#if    defined(

config_dm9000) || defined(config_dm9000_module)

static

struct resource dm9000_resources = ,

[1] = ,

[2] = ,

};static

struct platform_device dm9000_device = ;

#endif

上一步生成的巨集就會影響到包含巨集config_dm9000的檔案的編譯。筆者覺得通常這類c檔案「可能是」用到了dm9000的功能,可以選擇「新增」或者「去掉」,這正是autoconf.h中的巨集定義存在的意義。

4、include/config/auto.conf

# automatically generated make config:

don'

t edit

# linux kernel version: 

2.6.

30.4

# wed apr  

216: 22:

042014

#

config_video_v4l1_compat=m

config_hid_cherry=y

config_plat_s3c=y

config_usb_gspca_ov519=y

config_dm9000=y

config_s3c2410_clock=y

config_rtc_drv_s3c=y

auto.conf也是自動生成的,這個檔案被makefile所包含,它會影響到模組功能是否被新增,以何種方式新增。

5、drivers/net/makefile

obj-$(config_bfin_mac) += bfin_mac.o

obj-$(config_dm9000) += dm9000.o

在編譯核心的模組時,將模組的編譯劃分為三類:

obj-y代表該模組以靜態的方式編譯進核心中

obj-m代表該模組被編譯在核心之外,用到的時候需要手動載入

obj- 代表該模組不被編譯

例如,drivers/net/makefile根據auto.conf以靜態的方式編譯dm9000。

Dubbo原始碼分析 Config配置類

整體按四組進行設計,包括 抽象配置類的繼承關係如下 抽象方法配置 abstractmethodconfig 包括超時時間timeout 重試次數retries 最大併發呼叫actives 負載均衡loadbalance等內部屬性 抽象服務配置 abstractserviceconfig 包括協議配置...

Log4cpp原始碼解析 config

一 功能介紹 property configurator test file log4cpp.category.sub1.sub2 debug,a3該元件中包含兩個主要的類 configurator basicconfigurator propertyconfigurator propertycon...

linux 原始碼安裝

原始碼的安裝一般由3個步驟組成 配置 configure 編譯 make 安裝 make install 具體的安裝方法一般作者都會給出文件,這裡主要討論配置 configure configure是乙個可執行指令碼,它有很多選項,使用命令.configure help輸出詳細的選項列表,如下 ba...