Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95632
  • 博文数量: 16
  • 博客积分: 359
  • 博客等级: 一等列兵
  • 技术积分: 279
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-24 22:08
文章分类
文章存档

2014年(3)

2012年(13)

我的朋友

分类: LINUX

2012-03-25 00:13:27

2012年3月25日  Sunday

1、内核版本号 2.6.33.20
 
2、hello_kernel.c
 

点击(此处)折叠或打开

  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. #include <linux/kernel.h>

  4. MODULE_LICENSE("Dual BSD/GPL");

  5. static int hello_init(void)
  6. {
  7.     printk(KERN_ALERT "hello kernel\n");
  8.     return 0;
  9. }
  10. static int hello_exit(void)
  11. {
  12.     printk(KERN_ALERT "goodbye kernel\n");
  13. }

  14. module_init(hello_init);
  15. module_exit(hello_exit);
 
3、Makefile
 

点击(此处)折叠或打开

  1. obj-m += hello_kernel.o
  2. CURRENT_PATH := $(shell pwd)#linux命令获取当前路径
  3. LINUX_KERNEL := $(shell uname -r)#获取当前内核版本号
  4. LINUX_KERNEL_PATH := /usr/src/linux-$(LINUX_KERNEL)#解压编译内核路径,个人习惯,使用变量(LINUX_KERNEL)的方式增强Makefile移植性
  5. all:
  6. make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
  7. clean:
  8. #make -C $(LINUX_KERNEL_PAHT) M=$(CURRENT_PATH) clean
  9. rm *.mod.*
  10. rm *.order
  11. rm *.o
  12. rm *.symvers
 
4、代码测试
 
1)编译hello_kernel模块
  1. make
2)清楚用不到的生成文件
  1. make clean
3)插入模块
  1. insmod
4)查看内核输出的信息
  1. dmesg
5)移除内核
  1. rmmod

 
阅读(944) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~