知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

linux设备驱动整理(2)

发布时间:2014-09-05 15:10:55作者:知识屋

linux设备驱动整理(2)
 
"欲利其事,先利其器",整理一下编译linux设备驱动程序的makefile。 
Java代码    www.zhishiwu.com  
all:  
 KERNELDIR ?= /lib/modules/$(shell uname -r)/build  
 PWD := $(shell pwd)  
 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules  
  
clean:  
 $(MAKE) -C $(KERNELDIR) M=$(PWD) clean  
 
注意:按规定,makefile文件中,缩进部分一定是一个tab,不能用空格代替。 
 
 /lib/modules/$(shell uname -r)/build 对应的就是当前编译环境的linux源码树。 
 
用uname -r检查编译环境的内核版本是否和目标环境(也就是设备驱动程序要安装的那个操作系统)的内核版本是否一致。如果不一致,则需要安装和目标环境一致的linux源码树。否则会因为编译出来的ko文件的vermagic不同,而无法在目标环境下加载。
 
还有一个方法就是修改内核源码树中的include/linux/utsrelease.h (其中的UTS_RELEASE宏)和include/linux/vermagic.h中的VERMAGIC_STRING,也可以编译出带和目标环境一致的vermagic的ko。 
  www.zhishiwu.com  
用modinfo MyLinuxDrv.ko可以查到它相应的vermagic。 
 
写好一个MyLinuxDrv.c的设备驱动程序代码,将以上makefile脚本保存在同一目录下的Makefile文件里。 
 
执行make,即可编译出需要的MyLinuxDrv.ko文件。 
 
执行make clean 可清除编译出来的MyLinuxDrv.ko文件和中间目标文件(.o),以便重新编译。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜