红联Linux门户
Linux帮助

初学linux驱动程序的坎坷经历

发布时间:2010-04-23 23:57:40来源:红联作者:power1952
小弟我前两天买了本O'REILLY的《linux设备驱动程序》打算开始学习linux启动开发
建立内核树:
www.kernel.org下载了linux-2.6.32.11的源码
开始配置:#make oldconfig
出现大量需要配置的新属性,由于本人E文较差,对于配置项的意思基本靠蒙,实在梦不出来就按y
惨痛的经历开始了:
开始#make,出现了大量的警告
一个多小时之后终于make完了,然后#make modules_install,失败!
分析原因:我现在用的系统是fedora core11,内核为linux-2.6.30.10,
而我下载的源码比系在的版本高,所以出现了大量的需要配置的新选项
于是我又重新下载了linux-2.6.30.10的源码,
#make oldconfig
竟然没有任何需要手动配置的
#make
一个小时以后
#make modules_install
然后#make install
#reboot
成功进入新编译的系统!
照书写了一段代码:
//module_hello.c
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "hello,world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "goodbye,cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
写Makefile:
obj-m :=module_hello.o//照书上写的!
#make -C /usr/src/linux-2.6.30.10 M='pwd' module_hello
然后#make,失败,毫无头绪之下,上网搜
重写Makefile:
obj-m :=module_hello.o
KERNELDIR:=/lib/modules/2.6.30.10/build
PWD:=$(shell pwd )
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
#make
# ls -l|grep module_hello.ko
-rw-r--r--. 1 root root 67847 04-23 21:40 module_hello.ko
#telinit 3 切换到文本控制台
#insmod module_hello.ko
哈哈!果然输出hello,world!
成功!

总结:对内核结构了解太少,所以此情况下,最好不要从源码编译太新的内核,因为那样会让你载配置的时候遇到大量困难,同时应该进一步学习内核相关知识
对make和Makefile了解太少,需要进一步了解make的使用方法和make的过程,以及Makefile的编写规则,还有内核模块的编译方法和过程

以上是我的实践经历,希望对打算开始学习linux驱动程序的朋友有所帮助,同时我认为不能像我这样太浮躁,一定要打好基础再开始,
文章评论

共有 26 条评论

  1. lanlinux2012 于 2012-07-30 13:23:55发表:

    路过

  2. happynail1989 于 2012-07-28 11:35:56发表:

    难啊

  3. 5644 于 2011-03-15 19:56:42发表:

    这个以后的目标

  4. 373622116 于 2011-03-14 22:30:12发表:

    干干开始

  5. pallana 于 2010-09-03 21:19:00发表:

    学习学习

  6. dengt 于 2010-09-03 08:41:33发表:

    刚开始,呵呵

  7. glxin1982 于 2010-05-14 17:16:52发表:

    :0wpoi2

  8. bujiaxue 于 2010-05-14 16:58:02发表:

    学习!学习

  9. lwj19872002 于 2010-05-14 16:44:43发表:

    万事开头难~~~我正迈步向Linux的世界~

  10. 1106194350 于 2010-05-14 00:42:47发表:

    该好好学习make和makefile。。。。。刚学习,离内核还有很大距离....

  11. a3670503 于 2010-05-12 06:22:27发表:

    刚开始学,不知道什么时侯有实力编内核

  12. sony7019 于 2010-05-04 12:20:43发表:

    先标记个 过两天我就要来研究研究这个了

  13. 太阳之光 于 2010-05-04 12:19:27发表:

    看不明白????????

  14. dreamsshell 于 2010-05-04 11:39:05发表:

    引用:
    小弟我前两天买了本O'REILLY的《linux设备驱动程序》打算开始学习linux启动开发
    建立内核树:
    www.kernel.org下载了linux-2.6.32.11的源码
    开始配置:#make oldconfig
    出现大量需要配置的新属性,由于本人E文 ...
    power1952 发表于 2010-4-23 23:57

  15. sdulqs 于 2010-05-02 20:15:25发表:

    佩服

  16. 瀚海孤帆 于 2010-05-02 09:24:43发表:

    新手,刚开始

  17. cdp 于 2010-05-02 08:46:25发表:

    太让人敬佩了

  18. hujunhu 于 2010-05-01 23:00:04发表:

    刚开始,呵呵

  19. naruto01 于 2010-04-25 21:01:38发表:

    学好Linux的使用我就阿弥陀佛了

  20. puyan111 于 2010-04-25 20:55:58发表:

    ????????

  21. wangchao_ 于 2010-04-25 16:25:13发表:

    能深入内核才是linux的独特之处

  22. wangchao_ 于 2010-04-25 16:24:25发表:

    想学

  23. hantu 于 2010-04-24 12:35:23发表:

    想玩内核的话最好还是有点点C编程及编译软件的基础,不然满屏满屏都是看不懂的内容,一点意思都没有.

  24. wangyu 于 2010-04-24 10:33:57发表:

    原来是用老内核

  25. loife 于 2010-04-24 08:46:49发表:

    佩服

  26. yuliuliu777 于 2010-04-24 01:32:13发表:

    不太明白