Helloworld驱动编译成功

第一个驱动程序编译成功。。。

想在桌面linux系统中编写并测试自己的学习中的驱动程序,自己的驱动是Helloword.c   入门级别的,进来的Nx们不要见笑,这个只是我的个人学习笔记,呵呵

  因为之前老是出问题,因此有必要记录一下:

 

 

 

驱动程序如下:

#include<linux/init.h>
#include<linux/module.h>
#include<linux/version.h>
MODULE_LICENSE("GPL");

static int times=1;
module_param(times,int,S_IRUGO);


static int hello_init(void)
{
 int i=0;
 for(;i<times;i++)
{
  printk(KERN_ALERT "Hello,world/n");
}
 return 0;
}

static void hello_exit(void)
{

  printk(KERN_ALERT "Goodbye,cruel world /n");
}

modules_init(hello_init);
modlues_exit(hello_exit);

 

我的Makefile如下:


#makefile2.6
ifneq ($(KERNELRELEASE),)

#mymodule-objs :=file1.o file2.o
obj-m :=driver_test.o
else
PWD :=$(shell pwd)
KVER ?=$(shell uname -r)
KDIR :=/lib/modules/$(KVER)/build
all:
        $(MAKE) -C $(KDIR)  M=$(PWD)
clean:
        rm -rf .*.cmd  *.o  *.mod.c  *.ko  .tmp_versions
endif

 

上面编译时利用了桌面版本的linux内核源码树,在

/usr/src/kernels/2.6.23.1-42.fc8-i686下,由于我之前在做内核裁剪实验和制作根的时候不知道什么时候把顶层的Makefile的弄成事针对arm板的,导致出问题,针对左面linux,还原回去就行了。

ARCH            ?=$(SUBARCH)
CROSS_COMPILE   ?=

 

make一下

make -C /lib/modules/2.6.23.1-42.fc8/build  M=/home/faqiang/program/driver_test
make[1]: Entering directory `/usr/src/kernels/2.6.23.1-42.fc8-i686'
  LD      /home/faqiang/program/driver_test/built-in.o
  CC [M]  /home/faqiang/program/driver_test/driver_test.o

Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/faqiang/program/driver_test/driver_test.mod.o
  LD [M]  /home/faqiang/program/driver_test/driver_test.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.23.1-42.fc8-i686'

[root@localhost driver_test]#

 

 

好的,这就是我搞了一个早的程序了,最入门入门级别的程序了,但是还是出问题了呢?

主要是2.6内核的版本驱动编译的过程自己还是不太清楚了缘故,我折腾了半天,还花20分在论坛发帖,是不是被人不需要分还是嫌个问题太幼稚了呢部回答,我不知道,呵呵 ,任何问题自己弄懂了就Ok,区区20分何足挂齿。。

 

上面的Makefile是在linux2.6下编译驱动程序的模板了,需要修改的地方只是mymodule-objes ,obj-m,KDIR变量

这里看不到CC=GCC  CFLAG=-O2的缘故是利用了内核源码目录树下的makefile的协助编译的缘故,这也是为什么需要编译一个版本一致的内核的原因。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值