在内核3.17.6上编译scull(LDD3)
来源:互联网 发布:美萍数据库密码 编辑:程序博客网 时间:2024/05/30 05:10
由于Linux内核版本更新的原因,《linux设备驱动程序》(v2.6.10)提供的源码无法直接使用,下面是我在linux 3.17.6编译成功的修改步骤,对于内核2.6.30以后均有参考价值。
1. scripts/Makefile.build:46: *** CFLAGS was changed in "examples/scull/Makefile". Fix it to use EXTRA_CFLAGS
解决方法:将 Makefile 中的 CFLAGS 改为 EXTRA_CFLAGS
2. examples/scull/main.c:17:26: error: linux/config.h: 没有该文件或目录
解决方法:将 main.c 中的这条 include 语句注释掉。
3./opt/ldd3_examples/scull/main.c:32:46: fatal error: asm/system.h: No such file or directory
#include <asm/system.h> /* cli(), *_flags */
解决方法:将 main.c 中的这条 include 语句注释掉。
4./opt/ldd3_examples/scull/pipe.c: In function 'scull_p_read':
include/linux/wait.h:321:31: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
___wait_event(wq, condition, TASK_INTERRUPTIBLE, 0, 0, \
解决方法:在scull.h添加#include <linux/sched.h>
5./opt/ldd3_examples/scull/access.c:83:2: error: unknown field 'ioctl' specified in initializer
.ioctl = scull_ioctl,
解决方法:已没有ioctl成员,注掉即可
6./opt/ldd3_examples/scull/access.c:98:34: error: 'SPIN_LOCK_UNLOCKED' undeclared here (not in a function)
static spinlock_t scull_u_lock = SPIN_LOCK_UNLOCKED;
解决方法:
//static spinlock_t scull_u_lock = SPIN_LOCK_UNLOCKED;
改为static DEFINE_SPINLOCK(scull_u_lock);
7./opt/ldd3_examples/scull/access.c:106:29: error: 'struct task_struct' has no member named 'uid'
(scull_u_owner != current->uid) && /* allow user */
/opt/ldd3_examples/scull/access.c:107:29: error: 'struct task_struct' has no member named 'euid'
(scull_u_owner != current->euid) && /* allow whoever did su */
解决方法:
因为内核版本的升级,struct task_struct发生了变动,uid和euid放到了cred域下.
修改,做如下替换
current->uid 替换成current->cred->uid.val
current->euid替换成current->cred->euid.val
1. scripts/Makefile.build:46: *** CFLAGS was changed in "examples/scull/Makefile". Fix it to use EXTRA_CFLAGS
解决方法:将 Makefile 中的 CFLAGS 改为 EXTRA_CFLAGS
2. examples/scull/main.c:17:26: error: linux/config.h: 没有该文件或目录
解决方法:将 main.c 中的这条 include 语句注释掉。
3./opt/ldd3_examples/scull/main.c:32:46: fatal error: asm/system.h: No such file or directory
#include <asm/system.h> /* cli(), *_flags */
解决方法:将 main.c 中的这条 include 语句注释掉。
4./opt/ldd3_examples/scull/pipe.c: In function 'scull_p_read':
include/linux/wait.h:321:31: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
___wait_event(wq, condition, TASK_INTERRUPTIBLE, 0, 0, \
解决方法:在scull.h添加#include <linux/sched.h>
5./opt/ldd3_examples/scull/access.c:83:2: error: unknown field 'ioctl' specified in initializer
.ioctl = scull_ioctl,
解决方法:已没有ioctl成员,注掉即可
6./opt/ldd3_examples/scull/access.c:98:34: error: 'SPIN_LOCK_UNLOCKED' undeclared here (not in a function)
static spinlock_t scull_u_lock = SPIN_LOCK_UNLOCKED;
解决方法:
//static spinlock_t scull_u_lock = SPIN_LOCK_UNLOCKED;
改为static DEFINE_SPINLOCK(scull_u_lock);
7./opt/ldd3_examples/scull/access.c:106:29: error: 'struct task_struct' has no member named 'uid'
(scull_u_owner != current->uid) && /* allow user */
/opt/ldd3_examples/scull/access.c:107:29: error: 'struct task_struct' has no member named 'euid'
(scull_u_owner != current->euid) && /* allow whoever did su */
解决方法:
因为内核版本的升级,struct task_struct发生了变动,uid和euid放到了cred域下.
修改,做如下替换
current->uid 替换成current->cred->uid.val
current->euid替换成current->cred->euid.val
0 0
- 在内核3.17.6上编译scull(LDD3)
- LDD3中scull在新内核上编译中的各种error处理
- (LDD3)Scull在2.6.35-30内核中的编译解决方案
- LDD3 /scull 驱动实例在linux3.2.0编译实现
- 在Ubuntu 9.04 内核2.6.32.2 上编译Linux driver edit3 例子详解scull
- ldd3 读书笔记 —— scull 1 编译,解决内核更新引起的错误
- LDD3学习笔记--scull的编译
- ubuntu 1204 kernel 3.2编译ldd3 scull
- 编译LDD3的scull驱动问题总结
- LDD3学习笔记scull编译错误解决
- LDD3在Ubuntu下编译 scull例子时遇到的一些问题
- Scull在2.6.35-30内核中的编译解决方案
- scull 在2.6.32-5内核中的编译解决方案
- ldd3 scull代码理解
- LDD3 scull pipe 模块
- [linux设备驱动程序]scull字符设备驱动编译在新内核编译问题解决方案
- LDD3中scull字符设备源代码完全解析(一)
- linux内核开发--LDD3 scull错误集合,内核版本迁移清单
- python和Java的区别
- NBUT [1647] 又一道简单题【暴力】
- char与varchar的区别
- Linux下cpuinfo详解
- 结构体定义:struct与typedef struct 用法详解和用法小结
- 在内核3.17.6上编译scull(LDD3)
- 网易 产品策划( 杭州研究员) 笔试题解
- C/C++中基本数据类型学习
- hadoop 打jar包,在linux下运行
- eclipse编码格式设置
- 我心目中的C
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- JVM的内存区域划分
- Java并发编程:生产者消费者模式