Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48236
  • 博文数量: 14
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-05 22:28
文章分类
文章存档

2011年(1)

2009年(13)

我的朋友

分类: LINUX

2009-08-13 17:11:09

网上高人说学习内核  通过写module开始 那是一个捷径
今天就初步的学习了下 module    就写篇以防以后查询吧
 
主要是参考下面得网页 来写的  还是挺好的
 
但是按照他第二章步骤来出现了很多问题   不得不依从从网上查找资料 慢慢解决
 
如下
 
首先得把 hello module编译成功吧 
       首先得明白一个问题  这个hello module是用运行的内核来编译的  具体
                    说就是 如果你电脑运行的内核是2.6.24  而你自己做arm开发用的内核是2.6.12
                    你做的hello module 实验是跟2.6.12 是没相关的   除非你吧 .ko文件下载到
                    arm板子上 在运行    不知道我说明白了没有??
然后在写Makefile 文件的时候,你不能跟他写了  要换成下面的   

ifneq ($(KERNELRELEASE),)
obj-m := hello.o
 
else
 
        KERNELDIR ?= /lib/modules/$(shell uname -r)/build
        PWD :=$(shell pwd)
default:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
 
endif

然后输make 的时候 你就不这样写了make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules  (如果你直接复制黏贴的 话 是有问题的  在你黏贴后要吧 命令行的开头的空格删了  再加TAB 建  这是makfile规定的 命令前只能是TAB)
 
直接make就行了
就能生成.ko文件了
 
然后一个问题就是 在你insmod 的时候 你的终端上不显示printk要输出的东西
   解决办法就是 你另外打开一个一个终端  输命令 sudo su -   在输 cat /proc/kmsg
 就可以  至于说直接在一个终端上显示  好像要修改什么syslogdklogd  具体我要不知道 我晚上试试吧  到此为止吧
阅读(1339) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~