Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138789
  • 博文数量: 29
  • 博客积分: 2017
  • 博客等级: 大尉
  • 技术积分: 272
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-18 11:23
文章分类

全部博文(29)

文章存档

2011年(11)

2010年(18)

我的朋友

分类: 嵌入式

2011-07-13 10:27:50

   (原创)

    这几天,一直困惑于在Fedora中写好的驱动程序别编译成模块,由于现在的Fedora以及很多linux的发行版本都取消了在/usr/src目录的内核源码树,导致在做开发的时候遇到了很多问题。下面就这类问题介绍一下解决的办法。

    首先,查看/usr/src/kernel目录中有没有内核源码树,如果没有,在root账户执行以下命令:

                  yum install kernel-devel

   前提是必须连上网络,如果没有连接到网络,可以拷贝源码树到/usr/src/kernel。完成以后,查看/usr/src/kernel会发现有了内核源码树。如图

下面介绍利用此内核源码树编译内核的方法,比如,我的root目录有module.c的模块测试源文件,那么我们还需要编写一个Makefile,这个Makefile几乎是通用的,代码如下:

obj-m    :=module.o
KDIR    :=/usr/src/kernels/2.6.34.8-68.fc13.i686             #指定内核源码树,以我的情况为例
PWD    :=$(shell pwd)

default:

    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:

   rm -rf *.ko

   rm -rf *.mod.*

   rm -rf .*.cmd

   rm -rf *.o

#注意类似$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules这样的命令前面必须有tab键,不能有空格键

(作者:pstary)

下面,只要在当前还有module.c和Makefile的目录执行make,即可看到.ko文件的产生

如图:

这里只说明了单个源文件的编译方法,如果有多个源文件只需要按章Makefile的规则在obj-m    :=module.o这一句上添加一些代码即可

转载请注明来源


阅读(4153) | 评论(0) | 转发(0) |
0

上一篇:Fedora关闭防火墙

下一篇:madplay 移植

给主人留下些什么吧!~~