Linux驱动开发环境-Kernel源码安装
开如学习LDD3这本书。
我是在Fedora18上学习的,但我安装的这个版本,/usr/src/下面没有相应的源代码。
自己从KERNEL网站下载相应版本源码(安装驱动有问题)
于是从kernel的网上下载了一个3.6.10的kernel源码,我的fedora18是这个版本(uname -r查看)。
下载解压放在/usr/src/kernel/目录下,开始学习
这里需要修改Kernel源码中Makefile中定义的版本,一般LINUX发行商都会自己定义一个EXTRAVERSION的标识,下载的源码需要与使用的LINUX保存一致,不然,驱动在加载时提示加载不了,如我之前的提示(/var/log/messages的显示):
version magic '3.6.10 SMP mod_unload 686 ' should be ' 3.6.10-4.fc18.8686 SMP mod_unload 686';
所以我在kernel中的Makefile修改成如下:
VERSION = 3
PATCHLEVEL = 6
SUBLEVEL = 10
EXTRAVERSION = -4.fc18.i686
改完后,你需要在kernel源目录下,make一下(生成后,中途Ctrl+C就可以了,不然会等很久),以生成相应的文件。
按照上面的步骤,我编译完相应的驱动,也能正确的加载了,但我调用printk时,/var/log/messages中并没有打印相应的信息,找了很久,都找不到原因,问题出来在哪里。
最后我想是不是下载的内核源码与现在系统使用的一致的问题,于是从fedora下载旧的18版本的源码,安装上,测试,就可以了,虽然仍旧不知问题出来哪里。
下面是安装发行商下载的rpm源码包的过程:
1:下载源代码RPM文件
可以在相应的发行商的网站上下载,或使用yumdownloader source kernerl....(完整的包名,注意版本号)
2: 安装rpm包
rpm -ivh kernel...(rpm文件),在安装之前可以执行yum-builddep kernerl...(rpm文件),检查相关的依赖性(这一步也可以后面做)
在安装的过程中,如果出现如下错误:
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
新建一个组和一个帐号就好了。
#groupadd mockbuild
#useradd mockbuild -g mockbuild
然后再重新安装
3:将源码转成可用状态:
进入SPECS目录
cd ~/rpmbuild/SPECS
执行以下命令(如果没有安装rpmbuild,执行yum install rpm-build安装)
rpmbuild -bp –target=$(uname -m) kernel.spec (target选项前是两个-)
如果出现error: Failed build dependencies。。。的错误,执行
yum-builddep kernel.spec (kernel.spec是~/rpmbuild/SPECS目录下的文件)
or
yum-builddep kernel...(rpm文件),之前一步说明的检查相关的依赖性
成功能源代码会在~/rpmbuild/BUILD目录里
以上内容及问题参考了以下文章:
http://blog.csdn.net/derryzhang/article/details/6003122
http://stackoverflow.com/questions/13227162/automatically-install-build-dependencies-prior-to-building-an-rpm-package
4:下载安装的源代码里的Makefile里的版本和自己使用的主次版本一致,但发行商一般会加一个EXTRAVERSION来标识,
所以需要在源码的Makefile里定义EXTRAVERSION与自己用的发行 的一致的(uname -r).
Linux驱动开发环境-Kernel源码安装的更多相关文章
- s3c6410 Linux 驱动开发环境搭建
s3c6410 Linux 驱动开发环境搭建 -- 既然你是做Linux开发的,你还用虚拟机? 非常多人都在win下做开发,于是SD_writer.exe之类的烧写工具"大行其道" ...
- linux下MySQL 5.6源码安装
linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...
- 在ConoHa上Centos7环境下源码安装部署LNMP
本文记录了从源码,在Centos 7上手动部署LNMP环境的过程,为了方便以后对nginx和mariadb进行升级,这里采用yum的方式进行安装. 1.建立运行网站和数据库的用户和组 groupadd ...
- CentOS7.3环境下源码安装httpd
CentOS7.3环境下源码安装httpd 本文在CentOS7.3下,源码安装apache服务httpd2.4. 1.下载好源码安装包 [root@localhost ~]#ll total 625 ...
- LNAMP服务器环境(源码安装)
在安装前先看下它们安装时所需要的依赖库:http://www.cnblogs.com/fps2tao/p/7699448.html 1.nginx源码安装 下载:http://nginx.org/en ...
- Linux 系统安装配置PHP服务(源码安装)
简介: PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要 ...
- 【程序包管理】Linux软件管理之src源码安装编译
在很多时候我们需要自定义软件的特性,这时就需要用到源码安装.那么,网上有很多编译源码的工具,那么,我们怎么知道别人使用的是什么工具呢.其实我也不知道(*^▽^*). 那么本篇博客主要是写C代码的源码安 ...
- linux应用之nginx的源码安装及配置(centos)
1.准备工作选首先安装这几个软件:GCC,PCRE(Perl Compatible Regular Expression),zlib,OpenSSL.Nginx是C写的,需要用GCC编译:Nginx的 ...
- linux kernel 源码安装
有时我们在安装系统后,发现没有安装当前系统的内核源码在/usr/src/kernels目录下,其实我们是少安装了一个rpm包: 当你配置好yum源后: yum install kernel-devel ...
- Linux环境下源码安装Apache2.2.25
操作环境:RedHat Enterprise Linux 5.6 一.安装准备 安装Apache一般依赖3个组件:apr.apr-util.pcre. 确保这三个组件已经安装. [root@bigsr ...
随机推荐
- protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[]
如题,作者一开始也遇到了这个比较棘手的问题. 话不多说,直接说解决方案. 这里使用bytestring,如果是object[]的话则用repeated定义即可. 那么问题又来了,用这个类型怎么做到与j ...
- 关于安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的问题
安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的信息. 经过排查后发现,主要问题出在系统环境变量上. 安装了wind金融终端后,用户系统环境变量PATH里多了两个wind相关 ...
- VBA中的结构体
结构体必须放在"模块"中: Type Org tag As String person As New Collection End Type 使用: Sub testType() ...
- The difference of src and href
href是Hypertext Reference的缩写,表示超文本引用.用来建立当前元素和文档之间的链接.常用的有:link.a.例如: <link href="reset.css&q ...
- Neo4j学习(2)--简单入门
1.Neo4j属性图数据模型 节点:包含多个属性和标签.一个节点就是一条数据 属性:键值对形式 关系:单向与双向,连接节点,也可包含多个属性和标签 标签:表示节点和关系的类型,可以有多个,同时可以通过 ...
- SublimeText实现Markdown快速预览
SublimeText是什么? SublimeText是一个文本编辑器,同时也是一个先进的代码编辑器.SublimeText具有漂亮的用户界面和强大的功能,它的主要功能包括:拼写检查,书签,完整的Py ...
- k8s HPA(HorizontalPodAutoscaler)--自动水平伸缩
写在前面 我们平时部署web服务,当服务压力大撑不住的时候,我们会加机器(加钱):一般没有上容器编排是手动加的,临时加的机器,临时部署的服务还要改Nginx的配置,最后回收机器的时候,也是手动回收,手 ...
- 集训第二周计划:把cf近期的div2除了最后一题给切完
太菜了太菜了,弄个训练计划. 晚上没事干的时候我想把博客园皮肤改一下,搜着搜着不知道怎么回事点进去一些竞赛选手的博客,比如这个 https://www.cnblogs.com/soda-ma/p/13 ...
- Windows10一劳永逸的禁止更新/恢复更新
之前发表过一篇文章Windows10彻底关闭自动更新,这篇文章相对复杂了些.而且还是有一定几率会触发从而自动打开更新.下面讲的就是怎么一次性永久关闭更新,即使触发了更新,也不能下载更新,从而达到真正的 ...
- golang pprof 监控系列(1) —— go trace 统计原理与使用
golang pprof 监控系列(1) -- go trace 统计原理与使用 服务监控系列文章 服务监控系列视频 关于go tool trace的使用,网上有相当多的资料,但拿我之前初学golan ...