|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你想在以后的生涯中在软件行业工作的话,学习linux是一项基本技能,所以打从你打算学习linux那天起,放弃windows吧!因为它除了能给你带来片刻的娱乐,别无其他;
编译驱动源码,modpost总是堕落,因而进进/usr/src/`uname-r`目次下
#makescripts
接着再编译源码,之前的毛病消散了。呈现了新的毛病:
**1.c:1052:error:voidvaluenotignoredasitoughttobe
**1.c源代码中的1052行是:
ret=unregister_chrdev(MAJOR,DEVICE_NAME);
当刊出此行时能够编译经由过程,找到linux/fs.h头文件,内里界说了unregister_chrdev()函数:
externvoidunregister_chrdev(unsignedint,constchar*);
此处界说的为void范例函数,而在程序中将其赋值给了ret,这就形成了编译毛病。
因而正文了响应的代码,用unregister_chrdev(MAJOR,DEVICE_NAME);取代便可。如许就可以经由过程编译了。又呈现了新的成绩:
**2.c:474:’SA_INTERRUPT’undeclared(firstuseinthisfunction)//{本来头文件里没有SA_INTERRUPT了,一样平常利用IRQF_SHARED了。}
头文件为/usr/src/linux-2.6.26.8RedHawk5.2.4/include/linux下的interrupte.h
**2.c:474:’SA_SHIRQ’undeclared(firstuseinthisfunction)//{SA_SHIRQ已不撑持了,用IRQF_SHARED}
因而修正了这行,经由过程编译。
新的成绩又呈现了:
**3.c:57:error:’POLL_IN’undeclared(firstuseinthisfunction)
思索一定是因为头文件的成绩,间接刊出此行,先编译经由过程再说,编译乐成!
终究天生了**.ko的模块!
可是,新的成绩又呈现了,一直加载不了该模块
在/lib/modules/2.6.26.8-RedHawk-5.2.4-Moxa/kernel中新建文件夹extra
将天生的**.ko文件复制到该文件下
#depmod
#modprobe**.ko
FATAL:Module**.konotfound.
再用insmod命令尝尝
#insmod**.ko
Insmod:errorinserting‘**.ko’:-1Wrongmediumtype
利用命令#dmesg:
最初两行显现:
[PCI-**]:Errorinfind_device:nocard
[PCI-**]:Errorinfind_device:nocard
由于没有拔出板卡而至
</p>
开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。 |
|