linux设备驱动整理(2)
"欲利其事,先利其器",整理一下编译linux设备驱动程序的makefile。
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/$(shelluname-r)/build对应的就是当前编译环境的linux源码树。
用uname-r检查编译环境的内核版本是否和目标环境(也就是设备驱动程序要安装的那个操作系统)的内核版本是否一致。如果不一致,则需要安装和目标环境一致的linux源码树。否则会因为编译出来的ko文件的vermagic不同,而无法在目标环境下加载。还有一个方法就是修改内核源码树中的include/linux/utsrelease.h(其中的UTS_RELEASE宏)和include/linux/vermagic.h中的VERMAGIC_STRING,也可以编译出带和目标环境一致的vermagic的ko。
用modinfoMyLinuxDrv.ko可以查到它相应的vermagic。
写好一个MyLinuxDrv.c的设备驱动程序代码,将以上makefile脚本保存在同一目录下的Makefile文件里。
执行make,即可编译出需要的MyLinuxDrv.ko文件。
执行makeclean可清除编译出来的MyLinuxDrv.ko文件和中间目标文件(.o),以便重新编译。
相关推荐
farwang 2020-11-25
星愿心愿 2020-11-24
tianhuak 2020-11-24
zhjn0 2020-11-24
昭君出塞 2020-11-23
bluecarrot 2020-11-23
linuxwcj 2020-10-21
以梦为马不负韶华 2020-10-20
彼岸随笔 2020-10-20
yutou0 2020-10-17
applecarelte 2020-10-16
ourtimes 2020-10-16
waterhorse 2020-09-19
MRFENGG 2020-11-11
rainandtear 2020-10-30
kyssfanhui 2020-10-20
liuhangtiant 2020-10-20