一
经常在一些大些工程软件中看到很多CONFIG_打头的编译选项,以及使用make menuconfig后出现的光标选择界面,尤其是这些编译选项在Makefile中决定了对某些文件是否编译,下面简单介绍一下配合Makefile一起使用的Kconfig文件的语法。Kconfig针对2.6内核所有。
make menuconfig后首先调用的linux-2.6.x/arch/${ARCH}/Kconfig文件,默认的是i386的Kconfig,所以编译内核时最好在命令行指定ARCH=和CROSS_COMPILE=。
接着Kconfig通过source 语句逐层调用个子目录的Kconfig文件,最终将编译选择的结果保存到顶层目录的.config文件中。有些不同的是uclinux编译时,首先调用的是vendors/NXP/LCP2468目录下的各种config文件,这些文件作为默认值最先出现,选择之后再保存到linux-2.6.x/下的.config文件中。
Kconfig语法用到的关键字有:详见华清嵌入式培训教材《linux设备驱动开发详解》
1 menu
...
endmenu
2 choice
...
endchoice
3 config
4 boot,tristate,string,hex,int
5 depends on 或 if [expr..] 限定symbol的上限
6 default y[n]
7 prompt
8 help或--help--
9 select 限定symbol的下限,与depends相反
10 range 用于规定hex和int的范围
11 comment ""
二
1 编译内核模块时必须在makefile中指定ARCH和CROSS_COMPILE;
2 同时需要用-C {kernelsource_dir}指定内核源代码目录,目的是在编译内核模块时提供所需要的内核头文件;
阅读(822) | 评论(0) | 转发(0) |