没有合适的资源?快使用搜索试试~ 我知道了~
设备驱动make scull时遇到的问题汇总!
资源推荐
资源详情
资源评论
由于linux内核版本的升级,往往会让能在老版本内核上编译通过的驱动程序移植到新版本内核中出现各种编译和链接错误,这里就将我遇到的一些问题做个整理,让后续开发更流畅^_^!
当前内核版本为3.2.4
1.make[1]: Entering directory `/usr/src/linux-***' scripts/Makefile.build:49: *** CFLAGS was changed in "***/Makefile". Fix it to use ***. Stop.
原因:与Makefile.build中的CFLAGS冲突
建议:删除CFLAGS或者将CFLAGS重命名为EXTRA_CFLAGS
2. fatal error: linux/config.h: No such file or directory
原因:linux-2.6.20起,linux/config.h被移除了
建议:注释即可
3. error: unknown field ‘ioctl’ specified in initializer
原因:linux-2.6.26起,file_operations修改了,移除了ioctl,添加了如下两个接口long(*unlocked_ioctl)(structfile *, unsignedint,unsignedlong);long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
建议:视程序使用情况,把.ioctl修改成为.unlocked_ioctl或者compat_ioctl
4 error: implicit declaration of function ‘init_MUTEX’
原因:linux-2.6.25起,移除init_MUTEX,init_MUTEX_LOCKED宏定义
建议:将那句注释,新添一句sema_init(&scull_devices[i].sem,1);
5. error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
原因:linux-2.6.19起,TASK_INTERRUPTIBLE的定义被移动到linux/sched.h
建议:添加头文件 #include<linux/sched.h>
6. error: ‘SPIN_LOCK_UNLOCKED’ undeclared here
原因:新版本内核中,SPIN_LOCK_UNLOCKED被移除
建议:使用DEFINE_SPINLOCK(lock)宏来替代
7. error: ‘struct task_struct’ has no member named ‘uid’/ ‘euid’
原因:linux-2.6.31起,struct task_struct定义在include/linux/sched.h中,原来task_struct结构体定义有所改动,将uid和euid等挪到 cred中,见include/linux/sched.h和include/linux/cred.h
当前内核版本为3.2.4
1.make[1]: Entering directory `/usr/src/linux-***' scripts/Makefile.build:49: *** CFLAGS was changed in "***/Makefile". Fix it to use ***. Stop.
原因:与Makefile.build中的CFLAGS冲突
建议:删除CFLAGS或者将CFLAGS重命名为EXTRA_CFLAGS
2. fatal error: linux/config.h: No such file or directory
原因:linux-2.6.20起,linux/config.h被移除了
建议:注释即可
3. error: unknown field ‘ioctl’ specified in initializer
原因:linux-2.6.26起,file_operations修改了,移除了ioctl,添加了如下两个接口long(*unlocked_ioctl)(structfile *, unsignedint,unsignedlong);long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
建议:视程序使用情况,把.ioctl修改成为.unlocked_ioctl或者compat_ioctl
4 error: implicit declaration of function ‘init_MUTEX’
原因:linux-2.6.25起,移除init_MUTEX,init_MUTEX_LOCKED宏定义
建议:将那句注释,新添一句sema_init(&scull_devices[i].sem,1);
5. error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
原因:linux-2.6.19起,TASK_INTERRUPTIBLE的定义被移动到linux/sched.h
建议:添加头文件 #include<linux/sched.h>
6. error: ‘SPIN_LOCK_UNLOCKED’ undeclared here
原因:新版本内核中,SPIN_LOCK_UNLOCKED被移除
建议:使用DEFINE_SPINLOCK(lock)宏来替代
7. error: ‘struct task_struct’ has no member named ‘uid’/ ‘euid’
原因:linux-2.6.31起,struct task_struct定义在include/linux/sched.h中,原来task_struct结构体定义有所改动,将uid和euid等挪到 cred中,见include/linux/sched.h和include/linux/cred.h
资源评论
smile_tinghai
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功