编译linux本机的内核模块需要内核源码树么,Fedora中建立内核源码树并且单独编译模块的方法...

(原创)

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

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

yum install kernel-devel

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

da85ecde0ab58c466227983e.jpg

下面介绍利用此内核源码树编译内核的方法,比如,我的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文件的产生

如图:

1fec2b899d4481c1a5c2721f.jpg

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

转载请注明来源

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值