linux3.0.4编译LDD中的scull全过程

按照惯例,我是应该先写一些本章的收获的,不过太晚了。

在看完第三章之后开始编译,错误一堆,几乎崩溃,幸亏经过不断的百度,总算解决了问题,我发现

我遇到问题比较多,算是集中七个龙珠了吧,感谢先行的大神们。

1. CFLAGS was changed in "examples/scull/Makefile". Fix it to use EXTRA_CFLAGS.  Stop.

    由于LDD3使用的是2.6.10内核,很多东西已经发生了变化,这里提示我们修改Makefile中的CFLAGS,用EXTRA_CFLAGS代替,照它说的做就可以。

2、提示找不到文件linux/config.h:

    在2.6.19开始的内核中删除了config.h文件,因此只要在mian.c中注释掉#include<linux/config.h>即可。

3. unknown field ‘ioctl’ specified in initializer

linux2.6.29和linux2.6.38的内核在file_operations结构发生了变化,否则在linux2.6.38内核中,继续使用.ioctl成员,编译时就会报错:error: unknown field 'ioctl' specified in initializer,struct file_operations结构体定义在include/linux/fs.h文件中。

linux2.6.38内核取消了原有的ioctl成员,添加来新的成员

  1.         long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);    原来的ioctl 但是返回值变为long
  2.         long (*compat_ioctl) (struct file *, unsigned int, unsigned long); 内核空间64位,用户空间32位

会出现 warning: initialization from incompatible pointer type

出现此种warnning 的原因  “不兼容的指针类型初始化”

是你定义的函数类型与接口函数的类型不一样,如把返回值 long 定义成了 int 

这两个问题都对驱动有影响。

static const struct file_operations 。。。 = {
。。。。。。
   .unlocked_ioctl = 。。。,
。。。。。。
};

4. 错误: 隐式声明函数‘init_MUTEX’ [-Werror=implicit-function-declaration]

在新版本的linux内核中,init_mutex已经被废除了,新版本使用sema_init函数。

注意:多处调用这个函数。

clip_image007

5.error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
原因缺少头文件 #include <linux/sched.h> 添加后即可通过编译 !
注意:多处调用这个函数。
6. error: ‘SPIN_LOCK_UNLOCKED’ undeclared here (not in a function)
是说SPIN_LOCK_UNLOCKED不被认识了,其实也是被废弃了,改用DEFINE_SPINLOCK即可,如
/*static spinlock_t scull_w_lock = SPIN_LOCK_UNLOCKED;*改成下面到方式/
static DEFINE_SPINLOCK(scull_w_lock);
注意:还有scull_u_lock,scull_c_lock做同样的修改。
7. ‘struct task_struct’ has no member named ‘uid’
struct task_struct定义在include/linux/sched.h中,原来task_struct结构体定义有所改动,将uid和euid等挪到 cred中,见            
include/linux/sched.h和include/linux/cred.h。
因此只需要将报error的代码所在的文件做如下修改
current->uid 修改为 current->cred->uid
current->euid 修改为 current->cred->euid
总算集齐了七龙珠,模块运行起来了,虽然七个问题的解决方法都是网上都有的,但是我还是没有在同一篇文章中全都遇到他们,所以写下来。

 

 

转载于:https://www.cnblogs.com/likeyiyy/p/3525688.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用ado.net生成对应的sql语句

在不知道是增是删还是改还是查的情况下&#xff0c;用ado.net生成对应的sql语句。 对一张表批量操作。但前提条件是&#xff0c;对应一张表&#xff0c;主键&#xff0c;表的约束。//1.连接数据库SqlConnection con new SqlConnection(地址);//2.适配器(select语句,不是查数据…

前端学习(976):阿里百秀轮播图制作

引入js和css 复制html结构 结构调整

centos7解决火狐浏览器fash安装问题

su yum install flash-plugin 接下来一直yes就行啦

SAP RFC user 最小权限

今天作了几个rfc供外围系统调用&#xff0c;他们使用.net。 在.net调用时&#xff0c;提示“Lookup of function ET_PRDATA metadata failed for destination ZNMMPT_EXPORT_PR”。 这个错误&#xff0c;是由于GetFunctionMetadata()函数引起的&#xff0c;对此&#xff0c;NC0…

利用ado.net和winform连接ms Server可以做什么?

可以做简单的管理系统&#xff0c;如对班级&#xff0c;学生信息&#xff0c;超市&#xff0c;等等… 只是简单的&#xff01;并未涉及到数据的优化&#xff0c;处理。 进行界面与数据库的基本交互。 根据学习的小案例&#xff0c;做如下总结 1&#xff0c;有需求的建库建表建…

centOS7挂在windows移动硬盘方法

1&#xff0c;http://www.tuxera.com/community/open-source-ntfs-3g/ 下载ntfs-3g_ntfsprogs-2016.2.22这个压缩包&#xff0c;可用wget和浏览器两种方式都可以&#xff0c;前者更快&#xff1b; 2&#xff0c;解压&#xff0c;tar -xvf ***; 3&#xff0c;进入到解压目录**…

2020-11-16

4-4 区间偶数和 时间限制&#xff1a;1S 问题描述 输入n个不超过10000的正整数&#xff0c;找到这n个数中的最小数x和最大数y&#xff0c;计算闭区间[x,y]之间所有偶数的和s&#xff0c;输出x&#xff0c;y以及s。 输入说明 第一行输入n&#xff0c;表示有n个整数,0<n<…

增强中获取屏幕值的一句很实用代码…

增强中获取屏幕值的一句很实用代码&#xff0c;直接获取屏幕字段值&#xff0c; 一般是在增强中用比如MIGO收货时&#xff0c;希望获取收货对应的A01这个值增强&#xff1a;BADI&#xff1a; MB_DOCUMENT_BADI MB_DOCUMENT_BADI 是在过账后了&#xff0c;不能报E类型消息&…

picturebox与imagelist使用选择图片

Point1&#xff1a;picturebox 图片框点击时&#xff0c;弹出一个模态窗口&#xff0c;选完图片后关闭&#xff0c;然后窗口 有listview 大图标&#xff0c;imagelist&#xff0c;imagelist绑定listview。 1&#xff0c;窗体加载时显示所有图片。先在imagelist添加大小相似的图…

centOS7安装matlab2014a

1&#xff0c;网上下载matlab 2014a for linux; 2&#xff0c;挂载matlab_unix_2014a.iso到/mnt/matlab&#xff1b; mkdir /mnt/matlab2014a/ mount matlab_unix_2014a.iso /mnt/matlab2014a/ -o loop 3&#xff0c; cd /mnt/matlab2014a ./install4&#xff0c;选择第二个…

maven常见问题问答 收藏

maven常见问题问答 收藏转载于:https://www.cnblogs.com/shl-2012/p/3530548.html

xdoj机器人ac

xdoj机器人100分 #include<stdio.h> int main() { char a[22][22]; int b[22][22]{0}; int h,l,f; scanf("%d%d%d",&h,&l,&f); getchar(); int i,j,c0; int flag0; for(i1;i<h;i) { for(j1;j<l;j) { a[i][j]getchar(); }getchar();} for(i1;…

用c#做聊天软件

做一个即时聊天软件 需要&#xff1a;本地服务器 mssqlserver &#xff0c;工具&#xff1a;visual studio 2017 A,注册&#xff0c;2种方式&#xff0c;1&#xff0c;用多个groupbox把密码放在最后填写&#xff0c;2&#xff0c;直接填写密码&#xff0c;给出账号&#xff0c…

R语言安装;Rstudio安装

R安装 1&#xff0c;先安装一个源 yum install epel-release2&#xff0c;安装Ryum install R 搞定&#xff01;Rstudio安装 1&#xff0c;下载相应的安装包 https://www.rstudio.com/products/rstudio/download/ 2&#xff0c;rpm -ivh **.rpm 3&#xff0c;在usr/bin …

cocos2dx 背景用小尺寸图片滚动填充的方法

直接上代码 在初始化方法中添加图片&#xff1a; bool BackGroundLayer::init() {frameCacheCCSpriteFrameCache::sharedSpriteFrameCache();CCSize visibleSize CCDirector::sharedDirector()->getVisibleSize();bgCell1CCSprite::createWithSpriteFrame(frameCache->s…

高级数据库,建库,建表,建约束

use master --建库&#xff0c;dbtime&#xff0c;名称time create database dbtime on primary (name Time.mdf,fileName E:\Time.mdf,size 4mb,maxsize 20mb,filegrowth 2mb ) log on (name Time_log.ldf,filename E:\Time_log.ldf,size 4mb,maxsize 20mb,filegrowth…

1054. 求平均值 (20)

本题的基本要求非常简单&#xff1a;给定N个实数&#xff0c;计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000&#xff0c;1000]区间内的实数&#xff0c;并且最多精确到小数点后2位。当你计算平均值的时候&#xff0c;不能把那些非法的数据…

最大子段和c(c语言实现)

1&#xff0c;题目 2&#xff0c;各种算法 暴力解决&#xff0c;就是所有的情况都遍历一遍&#xff0c;然后说&#xff0c;我找到最牛逼的啦 int MaxSubseqSum1(int A[], int N, int* pidxStart, int* pidxEnd) { int sum A[0], tempSum 0;int i, j, k;*pidxStart 0, *pid…

sql语法,未完待续

MS SQLSEVER 是结构化查询语言&#xff0c;标准化查询语言&#xff0c;面向自然语言&#xff0c;编程语言。 做为编程语言&#xff0c;对编程却没卵用&#xff0c;是辅助查询用的。它没类库。 做为编程语言肯定有语法。 变量 declare i int set i 1 print i–消息 select i --…