Linux驱动Makefile 模板

PC机上的:
 1.obj-m := hello.o    
 2.KERNELDIR := /lib/modules/$(shell uname -r)/build  
 3.default:  
 4.    make -C $(KERNELDIR) M=$(shell pwd) modules  
 5.install:  
 6.    insmod hello.ko 
 7.uninstall:  
 8.    rmmod hello.ko  
 9.clean:  
 10.    make -C $(KERNELDIR) M=$(shell pwd) clean  

ARM上的:
 1.obj-m := hello.o    
 2.KERNELDIR :=/opt/friendlyARMQQ2440/ghCodes/kernel-2.6.13 #对应到自己开发板得内核目录 
 3.default:  
 4.    make -C $(KERNELDIR) M=$(shell pwd) modules  
 5.install:  
 6.    insmod hello.ko  #www.linuxidc.com
 7.uninstall:  
 8.    rmmod hello.ko  
 9.clean:  
 10.    make -C $(KERNELDIR) M=$(shell pwd) clean  
 
两者的区别仅仅在内核目录上,这个问题是后来才研究明白的,因为之前内核配置上的错误导致了很多问题,在网上找到一些解决方法,一一解决了,现在想总结时却发现都忘了是什么问题了,只记得最后的时候insmod hello.ko时出现如下错误:
 
version magic '2.6.14.7 ARMv4 gcc-3.4' should be '2.6.14.7 preempt ARMv4

gcc-3.4'
 
insmod: cannot insert `st7565p_driver26.ko': Invalid module format (-1): Exec format error
 
解决办法:
 
用如下操作:
 
我用的是make menuconfig.

注意:
 
您的内核必须已启用这些选项进行了编译,用以支持模块的动态加载。
 
(用make menuconfig调出内核配置菜单):
 
Loadable module support --->
 
Enable loadable module support
 
Module unloading
 
[ ] Module versioning support (EXPERIMENTAL)
 
Automatic kernel module loading
 
注:该步没做时,在make modules时将出错。
 
Kernel Feautre -> Preemptible Kernel
 
配置完后重新make,然后就能在arm端成功运行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值