新手 Fedora 7 下编译 linux 设备驱动 3ed scull模块
来源:互联网 发布:淘宝优惠活动图片 编辑:程序博客网 时间:2024/06/07 13:07
Linux Device Driver(ldd) 是本内核开发入门书籍.其中scull是第一个例子模块.所以学习scull是很重要的.由于内核开发变动较快.所以ldd书中的一些例子已经不能在现有开发环境中编译了.本文说明如何在fedora7平台修改scull程序,使他能够顺利编译.
Fedora 安装时没有内核开发的部分.所以我们先要安装内核开发相关包.
1在fedoar官方站点的ftp中下载和你自己内核版本相同的源代码和devel包
比如我通过uname -r命令看到我的内核版本是2.6.22.1-41.fc7
于是就下载
kernel-devel-2.6.22.1-41.fc7
kernel-2.6.21-1.3194.fc7.src.rpm
然后安装这两个包.kernel-devel可以直接安装.如果要装src的话还要rpmbuild一下.把补丁打进去.具体方法网上有很多关于内核编译的文章.
2.下载ldd第三版的源代码
http://examples.oreilly.com/linuxdrive3/examples.tar.gz
接着把它解压缩 tar zxvf examples.tar.gz
进入scull目录
我们可以看到有main.c文件
打开他.删除include中的linux/config.h 由于在2.6.19版本以后config.h文件被取消了.所以以后有config.h的地方都会报错
接下来再make,还是有错.发现是if (! capable (CAP_SYS_ADMIN))这里.CAP_SYS_ADMIN找不到.在网上查一下,发现这个宏是定义在linux/capability.h中的
于是加#include <linux/capability.h>
再编译还是不通过.原因还是有宏没有定义.不过这次是在access.c中.
根据未定义的宏查找.发现他们在inux/capability.h和sched.h.两个文件中
在access.c中加入
#include <linux/capability.h>
#include <linux/sched.h>
改正了这些以后
make回车
下面是输出
make -C /lib/modules/2.6.22.1-41.fc7/build M=/home/hide1713/Desktop/kernel/examples/scull LDDINC=/home/hide1713/Desktop/kernel/examples/scull/../include modules
make[1]: Entering directory `/usr/src/kernels/2.6.22.1-41.fc7-i686'
CC [M] /home/hide1713/Desktop/kernel/examples/scull/access.o
LD [M] /home/hide1713/Desktop/kernel/examples/scull/scull.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/hide1713/Desktop/kernel/examples/scull/scull.mod.o
LD [M] /home/hide1713/Desktop/kernel/examples/scull/scull.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.22.1-41.fc7-i686'
看到这样就是编译好了.
我们用chmod +x scull_load scull_unload 把这俩个脚本变为可执行
./scull_load
/sbin/lsmod
怎么样.顺利装入内核了吧.上面的内容是我凭记忆写的.如果和实际情况有出入请还是按照上面的方法.先差是哪个定义引起的.再把对应的头文件加入就行了
Fedora 安装时没有内核开发的部分.所以我们先要安装内核开发相关包.
1在fedoar官方站点的ftp中下载和你自己内核版本相同的源代码和devel包
比如我通过uname -r命令看到我的内核版本是2.6.22.1-41.fc7
于是就下载
kernel-devel-2.6.22.1-41.fc7
kernel-2.6.21-1.3194.fc7.src.rpm
然后安装这两个包.kernel-devel可以直接安装.如果要装src的话还要rpmbuild一下.把补丁打进去.具体方法网上有很多关于内核编译的文章.
2.下载ldd第三版的源代码
http://examples.oreilly.com/linuxdrive3/examples.tar.gz
接着把它解压缩 tar zxvf examples.tar.gz
进入scull目录
我们可以看到有main.c文件
打开他.删除include中的linux/config.h 由于在2.6.19版本以后config.h文件被取消了.所以以后有config.h的地方都会报错
接下来再make,还是有错.发现是if (! capable (CAP_SYS_ADMIN))这里.CAP_SYS_ADMIN找不到.在网上查一下,发现这个宏是定义在linux/capability.h中的
于是加#include <linux/capability.h>
再编译还是不通过.原因还是有宏没有定义.不过这次是在access.c中.
根据未定义的宏查找.发现他们在inux/capability.h和sched.h.两个文件中
在access.c中加入
#include <linux/capability.h>
#include <linux/sched.h>
改正了这些以后
make回车
下面是输出
make -C /lib/modules/2.6.22.1-41.fc7/build M=/home/hide1713/Desktop/kernel/examples/scull LDDINC=/home/hide1713/Desktop/kernel/examples/scull/../include modules
make[1]: Entering directory `/usr/src/kernels/2.6.22.1-41.fc7-i686'
CC [M] /home/hide1713/Desktop/kernel/examples/scull/access.o
LD [M] /home/hide1713/Desktop/kernel/examples/scull/scull.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/hide1713/Desktop/kernel/examples/scull/scull.mod.o
LD [M] /home/hide1713/Desktop/kernel/examples/scull/scull.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.22.1-41.fc7-i686'
看到这样就是编译好了.
我们用chmod +x scull_load scull_unload 把这俩个脚本变为可执行
./scull_load
/sbin/lsmod
怎么样.顺利装入内核了吧.上面的内容是我凭记忆写的.如果和实际情况有出入请还是按照上面的方法.先差是哪个定义引起的.再把对应的头文件加入就行了
- 新手 Fedora 7 下编译 linux 设备驱动 3ed scull模块
- linux设备驱动开发中有关scull模块的编译问题
- linux设备驱动开发中有关scull模块的编译问题
- Fedora下编译模块驱动
- linux设备驱动——scull源码编译问题
- [linux设备驱动程序]scull字符设备驱动编译在新内核编译问题解决方案
- Fedora下编译Hello模块驱动
- ldd(linux设备驱动程序)scull驱动
- Scull字符设备驱动模块的内存使用分析
- Linux设备驱动学习(2) 全局内存“设备” scull
- Linux设备驱动--Linux驱动模块交叉编译的注意事项
- Introduction the naive“scull” 《linux设备驱动》 学习笔记
- linux驱动学习笔记(2.3) scull模块 init_MUTEX被废除
- Linux字符驱动-scull
- SCULL简单字符设备驱动
- linux 内核驱动学习之scull代码编译
- linux下 驱动模块编译步骤
- 设备驱动之一 - 最简单的可运行的scull模块
- 70位专家谈CSS设计
- OpenCMS 7.0 JSP Tag Library和模板分块定义
- JAVA新手入门必看的30个问题!!
- 设计网络服务器ISAPI
- 如何制作Windows自定义边框的对话框
- 新手 Fedora 7 下编译 linux 设备驱动 3ed scull模块
- RESTful GeoWeb学习手记(一):构建REST风格的网络服务
- (转)浅谈sql注入式(SQL injection)攻击与防范
- How to convert string to Guid type.
- Visual Studio Tools for Applications
- 三清山游记
- ILOG JViews Diagrammer
- 如何让两个对话框的同时显示
- First vistor