一、.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其中,autoconf.h是c語言標頭檔案主要影響c檔案的編譯。include/config/auto.conf
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...