我编写了一个使用Linux kbuild机制实现可配置编译的小例子,工程名为print-example。包括如下如下几个目录:
其中scripts、Makefile、Makefile.flags是从busybox-1.9.0复制过来的。
4.1 运行print运行make menuconfig命令弹出配置菜单如下:
进入Print Configure选项选择配置项:
这里选择代印信息1和2,保存退出配置界面。
运行make命令编译程序,生成print可执行文件,运行print结果如下:
运行make clean编译产生文件。
4.2 实现print4.2.1 主目录Makefile
主目录Makefile修改部分代码如下:
使用core-y时是使用的静态链接目标文件obj-y,使用libs-y时是使用库目标文件lib-y,各个子目录的Makefile应该相应的使用obj-y或lib-y。
4.2.2主目录Kconfig
主目录Kconfig代码如下:
它给出了主菜单的配置选项,并有source关键字加入子目录的Kconfig文件。
4.2.3 main文件夹
main文件夹下共两个文件:
其中,main.c代码如下:
头文件autoconf.h是在编译过程中生成的。
Makefile代码如下:
4.2.4 printfun文件夹
printfun文件夹下有六个文件:
其中,printx.c(print1.c, print2.c, print3.c, print4.c)代码如下:
Makefile代码如下:
Kconfig代码如下:
4.2.5 include目录
include目录下只有一个文件print.h,代码如下:
【1】孙纪坤 配置编译内核
【2】linux kernel /Documentation/kbuild/kconfig-language.txt
【3】2.6Kconfig语法
【4】linux kernel /Documentation/kbuild/makefile.txt
【5】linux2.6内核Makefile详解