小学教育下载
2018年鼓楼区中考填报志愿指南
国家电网公司董事长舒印彪代表:北方地区清洁供暖京津率先打造“无煤区”
两人三足游戏规则介绍(二篇)
2019年中考没考好可以复读吗,中考没考好能复读吗
北京C++少儿编程培训
新华社点赞章丘移风易俗工作经验
友情链接
 
  教育信息化 您现在的位置 - 网站首页 > 教育信息化 > 驱动模块Makefile解析  
 

驱动模块Makefile解析

发布时间:2019-06-09
 

先看一下代码ifeq($(KERNELRELEASE),)KERNELDIR=/home/linux/:=$(shellpwd)modules:$(MAKE)-C$(KERNELDIR)M=$(PWD)modulesmodules_install:$(MAKE)-C$(KERNELDIR)M=$(PWD)modules_installclean:rm-rf*.o*~*.cmd*.ko*._:modulesmodules_installcleanelseobj-m:=其中有一些是我们常见或是见过的,第一个ifeq($(KERNELRELEASE),)目前,并无用处,它的由来是指在Linux源码根目录下的Makefile编译内核时,KERNELRELEASE宏会被定义,那么如果是从源码根目录开始的make则会将模块编译进内核。

KERNELDIR=/home/linux/,这句是对KERNELDIR进行赋值,这个变量是后面我们用到的指代内核源码目录用的。 PWD:=$(shellpwd),这句是对PWD变量进行赋值,作用是将$(shellpwd)的返回结果既求得当前目录的路径赋值给PWD,这个变量我们在后面指代我们要编译的驱动程序所在的位置。

modules:$(MAKE)-C$(KERNELDIR)M=$(PWD)modules这句是Makefile的规则:这里的$(MAKE)就相当于make,-C选项的作用是指将当前工作目录转移到你所指定的位置。

M=选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在makemodules命令中加入M=dir,程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成KO文件。 modules_install:$(MAKE)-C$(KERNELDIR)M=$(PWD)modules_install这个命令是模块的安装,在Makefile中搜索lib\/modules可以看到下面的语句,通过阅读你不难找到这个MODLIB的用处,它是用来指定安装路径的,而变量INSTALL_MOD_PATH往往为空。

MODLIB=$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE):modulesmodules_installclean这句话是的作用是保证modules,modules_install,clean这三个命令能正常完成。

.PHONY这是一个特殊目标名称,还有其它的,如:.SUFFIXES,.DEFAULT,.PRECIOUS,.INTERMEDIATE,.SECONDARY,.SECONDEXPANSION,.DELETE_ON_ERROR,._RESOLUTION__ALL_它们的具体用法可以参考GNU手册中的SpecialBuilt-inTargetNames章节。

.PHONY目标的具体意思是如果在Makefile的工作目录中有名如:modules,modules_install,clean等文件时命令会出错。

它是防止这出错的方式。

上一篇:首批5G城市名单公布 有苏州
下一篇:没有了
 
网站地图
版权所有:www.33588y.com小学教育_小学教育
地址:吉林市西环江路
吉ICP备16006号