博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写驱动的makefile使要
阅读量:6936 次
发布时间:2019-06-27

本文共 1033 字,大约阅读时间需要 3 分钟。

hot3.png

一般在编译linux驱动时,我们需要在交叉编译环境中进行编译,所以要在编译环境中搭建交叉编译环境。编写驱动的makefile使需要制定驱动依赖的内核的路径,makefile写法如下:

  KERN_DIR = /xxx/xxx/linux-2.6.22.6
  
  all:
      make -C $(KERN_DIR) M=`pwd` modules 
  
  clean:
      make -C $(KERN_DIR) M=`pwd` modules clean
      rm -rf modules.order
  
 obj-m    += buttons.o

     KERN_DIR=/XXX/XXX/linux-2.6.22.6,这句是对KERN_DIR进行赋值,确定后面使用内核源码时的内核源码路径。

  make -C $(KERN_DIR) M='pwd' modules,这句是makefile的规则:-C选项的作用是指将当前工作目录转移到你所指定的位置,当make的目标为all时,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile。

    M=$(PWD) 表明然后从内核makefile中返回到当前目录继续读入、执行当前的Makefile。M是内核根目录下的Makefile中使用的变量,"M="选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules命令中加入"m=dir",程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成ko文件。M=‘pwd’这句话是用来制定我们编译的驱动的路径。这句可以这样来写PWD:=$(shell pwd)  M='PWD'。

================================================================================

当make的目标为all时,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile;M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。

当从内核源码目录返回时,KERNELRELEASE已被被定义,kbuild也被启动去解析kbuild语法的语句,make将继续读取else之前的内容,其为kbuild语法的语句, 指明模块源码中各文件的依赖关系,以及要生成的目标模块名。
 

 

     

转载于:https://my.oschina.net/u/920274/blog/2986594

你可能感兴趣的文章
delphi初始化文件的默认路径
查看>>
如何处理Express异常?
查看>>
深入认识PHP的框架和CMS的关系
查看>>
NOSQL分类
查看>>
VUE学习遇到的问题及解决方法(一)
查看>>
如果没有UX经验,如何创建个人UX作品集?
查看>>
帮助你检查Linux系统内存及其使用情况的命令
查看>>
Jeff Dean本科论文首次曝光!第一批90后出生时,他就在训练神经网络
查看>>
Python中lambda的用法
查看>>
E036-rpmdb open failed
查看>>
手把手:一张图看清编程语言发展史,你也能用Python画出来!
查看>>
使用MaxCompute进行数据质量核查
查看>>
SQLServer2005 判断数据库中是否存在某张表或是查找库中的所有表名,然后删除...
查看>>
awk工具
查看>>
mysql 常用日期处理函数
查看>>
使用python进行数据的采集 编辑 删除
查看>>
布尔类型及return 严重程度
查看>>
解决springboot程序员的一点小困惑,nginx的反向代理
查看>>
Java虚拟机基本结构的简单记忆
查看>>
hibernate查询返回结果值为实体时接收方法
查看>>