首页 > 其他 > 详细

编译模块的Makefile解析

时间:2016-03-12 11:51:10      阅读:136      评论:0      收藏:0      [点我收藏+]

 Makefile

# if not defined KERNELRELEASE, command is running from command line,need invoke kbuild system.

ifeq ($(KERNELRELEASE),)  

  KERNELDIR ?= /linux-2.6.30.4 # the directory of kernel source file  

  PWD := $(shell pwd) # the directory of module source file

modules:  

  $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:  

  $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:  

  rm -rf *.o *~core.depend.*.cmd *.ko *.mod.c.tmp_versions

.PHONY: modules modules_install clean # if defined KERNELRELEASE, kbuild running

else  

  obj-m:= hello.o # the source file of module endif

#################################################################

 

该Makefile 在模块构造过程中一般将被调用两次。使用make 时,第一次 KERNELRELEASE 尚未定义。KERNELDIR 将被定义为内核源码路径,PWD 将被赋值为模块源码文件所在路径。然后通过 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules进入内核源码目录调用顶层Makefile 。顶层Makefile 会通过 M=$(PWD) 获得指定的模块源码所在路径,并调用其下的 Makefile。即该Makefile 将被调用第二次,此时将会执行else 后的语句,通过内核顶层Makefile 构建出模块。

 

编译模块的Makefile解析

原文:http://www.cnblogs.com/youngvoice/p/5268198.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!