hello module编译过程

 开发环境:FC9  内核为2.6.27.25-78.2.56.fc9.i686 ,
GCC为:4.3.0

 

在编译之前首先在FC9中安装内核和内核头文件
通过yum可以轻松的搞定

yum install -y kernel-headers kernel-devel


这里将写一个基础的“hello world”字符设备驱动,代码如下:

 

编译过程:
Makefile (注意不是makefile, 否则会报错找不到Makefile )
Makefile

002 # Makefile for Linux Kernel Primer module skeleton (2.6.7)
003   obj-m += hellomod.o

 

在终端输入:
]#make -C make -C /usr/src/kernels/2.6.27.25-78.2.56.fc9.i686/  SUBDIRS=$PWD modules

 

我的内核位于/usr/src/kernels/2.6.27.25-78.2.56.fc9.i686/这个目录中

 

输出:
make: Entering directory `/usr/src/kernels/2.6.27.25-78.2.56.fc9.i686'
  CC [M]  /root/mystudy/linux/example/hellomod/hellomod.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/mystudy/linux/example/hellomod/hellomod.mod.o
  LD [M]  /root/mystudy/linux/example/hellomod/hellomod.ko
make: Leaving directory `/usr/src/kernels/2.6.27.25-78.2.56.fc9.i686'

 

# insmod hellomod.ko


# lsmod
Module     Size  Used  by
hellomod    2696  0
 ..................


[root@localhost hellomod]# tail /var/log/messages
.....
.....
Nov 25 15:57:14 localhost kernel: Hello, world!form the kernel space ...

 

[root@localhost hellomod]# rmmod hellomod

 

[root@localhost hellomod]# tail /var/log/messages
....
....
Nov 25 15:57:14 localhost kernel: Hello, world!form the kernel space ...
Nov 25 15:58:13 localhost kernel: Goodbye, world!leaving the kernel space ...

 

常见错误: Invalid module format

可以编译通过当事不用加载,提示:-1 invalid module format
我遇到的问题是: 所用内核源码版本与机器使用的内核版本不同

在编译生成.ko文件后加载提示如下错误:
insmod: error inserting 'hellomod.ko': -1 Invalid module format
然后查看系统日志,有如下信息
Nov 25 15:56:30 localhost kernel: hellomod: version magic '2.6.27.25 SMP mod_unload 686 4KSTACKS ' /
should be '2.6.27.25-78.2.56.fc9.i686 SMP mod_unload 686 4KSTACKS '

 

通过yum安装内核过后,使用系统的内核来编译就不活发成错误了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值