为内核增加新源码目录编译配置

开始着手学习arm  linux知识了,为了自己的学习和实践代码和内核源生代码实现分离和解耦,决定在内核的目录新增一个自己的源码目录,配置并编译进内核。

一.新增配置选项及编译脚本

(1)       新增根目录的配置选项

      修改文件:

arch\arm\Kconfig

在“menu "System Type"”之前新增项目

# study/Kconfig

menu "Linux Kernel Study & Practice"

source "study/start/Kconfig"

endmenu

 

增加这几行可在 config界面新增一个叫Linux Kernel Study & Practice的项目

 

(2)       新增start目录的配置选项及编译文件

 

l  创建文件Kconfig

study/start/Kconfig

内容如下:

# study/start/Kconfig

menuconfig STUDY_START

       bool "kernel study start project"

       help

         kernel start study project

if STUDY_START

source "study/start/hello/Kconfig"

endif # STUDY_START

 

这个会在新增的config项目下新增一个二级菜单,下面的

source "study/start/hello/Kconfig"依赖于STUDY_START,是我的最终学习源码文件目录。

l  创建文件makefile

study/start/makefile

 内容如下

# makefile add for study

obj-$(CONFIG_STUDY_START) += start/

 

这里的宏CONFIG_STUDY_START由上面的STUDY_START配置选项生成,表明子目录”start/”下面的makefile受这个宏依赖。

(3)       start目录的配置选项及编译文件

第一个学习项目目录名为hello

l   创建文件\study\start\hello\Kconfig

内容如下:

config HELLO

     tristate "First Android Driver"

     default n

     help

     This is the first android driver.

l  创建文件\study\start\hello\makefile

内容如下:

obj-$(CONFIG_HELLO) += hello.o

 

可见linux的源码目录编译环境配置是Kconfig文件和makefile文件结合实现的,Kconfig生成宏和目录依赖关系,makefile把这些宏和依赖关系传递到具体的文件,这些是随着目录树由根目录往深处层层推进的。

二.把新增的目录加入编译最终的链接

因为是新增的一个根目录,所以这个时候还不会被编译器识别,还需要修改一个文件:

根目录下的makefile

增加如下(黑体):

# Objects we will link into vmlinux / subdirs we need to visit

drivers-y     := drivers/ sound/ firmware/

study-y   :=  study/

 

vmlinux-dirs        := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \

                 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \

                 $(study-y) $(study-m)\

                 $(net-y) $(net-m) $(libs-y) $(libs-m)))

 

drivers-y     := $(patsubst %/, %/built-in.o, $(drivers-y))

study-y   := $(patsubst %/, %/built-in.o, $(study-y))

net-y           := $(patsubst %/, %/built-in.o, $(net-y))

 

vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)$(study-y)

 

照抄drivers目录的配置,呵呵,这样我的新增工程就入驻kenel的根目录了

 

 


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值