编译内核模块Hello World V4.0

       经过了V3.0其实整个架构都清晰了,但是有一点遗憾要解决一个问题就是kangear_module目录下有两个Makefile就是MakefileMakefile2。如果以后都这样写,很外行,刘谦将酒瓶和酒杯都搞在了一起,我们就要将两个Makefile搞在一起,下面就是见证奇迹的时刻。

       它们的代码弄到一个文件中是这样的:

       

       流程图是这样的:

       

       如何能实现在第一次调用这个Makefile执行一部分代码,第二次时执行另一部分呢?很容易想到的就是条件执行了。条件语句就应该有一个条件,就选由于内核顶层目录下的linux-3.7/Makefile中有很多变量,就可以用它们来区分,就好比一个ARCH,KERNELRELEASE,GCC,就可以来指定地只调用obj-m:=hello.o了。

       选用的是KERNELRELEASE这个变量只要也是只有在调用linux-3.7/Makefile之后才会有的一个变量赋值,且不管赋的是什么值,但是它不为空的。就可以这么构思:

       

       那么Makefile就可以这么写了:

ifneq (($KERNELRELEASE),)

obj-m:=hello.o

else

default:
	make -C /opt/kangear/kernel/linux-3.7 M=/opt/kangear/kernel/linux-3.7/kangear_module/  modules

endif

       再把以前的精简版本结合到一起Makefile就是这个样子的:

ifneq ($(KERNELRELEASE),)

obj-m:=hello.o

else

KERNELDIR := /opt/kangear/kernel/linux-2.6.32.2
PWD := $(shell pwd)

default:
	make -C $(KERNELDIR) M=$(PWD)  modules

endif

       这时候再翻开LDD3来看这个Makefile,感觉好多了。编译内核模块Hello World 也结束了。写写笔记,学习的会更透彻!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值