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).

 

转载于:https://www.cnblogs.com/jhting/p/3482056.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值