1.注释掉#include <asm/system.h>这个文件。
2.出现错误unknown field 'ioctl' specified in initializer。
出现原因:2.6.36后的file_operations结构发生了重大变化。取消了原有的ioctl成员,添加来新的成员
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以将.ioctl 改为.unlocked_ioctl
3.出错error:implicit declaration of function 'kmalloc'
2.出现错误unknown field 'ioctl' specified in initializer。
出现原因:2.6.36后的file_operations结构发生了重大变化。取消了原有的ioctl成员,添加来新的成员
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以将.ioctl 改为.unlocked_ioctl
3.出错error:implicit declaration of function 'kmalloc'
添加#include <linux/slab.h>
4.error inserting 'globalmem.ko': -1 Device or resource busy
用cat /proc/devices 命令查看发现主设备号已被占用,所以更改驱动程序
#define GLOBALMEM_MAJOR 为新的数就可以了
本文解决了Linux驱动开发中常见的几个问题,包括注释掉不适用的头文件、处理因结构体更新导致的编译错误、声明函数未定义的问题及设备号冲突导致的加载失败。
1628

被折叠的 条评论
为什么被折叠?



