加载中断模块错误提示:Unknown symbol in module

在学习2.6.32内核驱动时,遇到`request_irq`函数导致的加载模块错误。通过查阅资料、对比内核版本差异,发现2.6.26和2.6.32中该函数定义不同。添加正确头文件`<linux/interrupt>`后,解决了编译和加载问题。建议学习时自主解决问题,理解内核更新带来的函数定义变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次写博客,分享心得。


在学习内核驱动时,韦东山老师所用的内核版本是2.6.26,我的内核版本是2.6.32。因为烧写进开发板的内核映像就是2.6.32的,为了保持版本号一致,就没有跟随老师用同一个版本。学习过程中就会遇到所讲课内容和我的内核内容冲突的问题,例如有的宏或者函数在2.6.26中有定义,但是在2.6.32中就取消了或者采用其他的定义方式。这样就需要自己深入内核代码中去查找差异,可以比较当前内核中自带的函数如何处理类似的问题。

我在学习按键中断驱动时就遇到了这样的问题,尝试各种办法,最终得以解决,分享一下。

第一次make时出现错误提示:

error:implicit declaration of function 'request irq',

提示说request_irq这个中断注册函数定义模糊(不知道标准的翻译是什么,我的理解如此)。于是在《Linux设备驱动程序》中查找到了request_irq的函数定义:

int request_irq(unsigned int irq,

irqreturn_t (*handler)(int , void *, struct pt_regs *), 

unsigned long flags, 

const char *dev_name,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值