linux内核驱动模块的编译及加载

主机:Windows 7旗舰版,VMware7.1.2Fedora9

编译环境:arm-linux-gcc 4.4.3

Linux版本:linux-2.6.32.2

busybox版本:busybox-1.19.4

目标板:友善之臂micro2440

 

 

编译使用内核模块的方法:

编写一个简单的Linux内核模块Hello World,hello.c内容如下:

 

点击(此处)折叠或打开

  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. MODULE_LICENSE("Dual BSD/GPL");
  4. static int hello_init(void)
  5. {
  6. printk(KERN_ALERT " Hello World enter\n");
  7. return 0;
  8. }
  9. static void hello_exit(void)
  10. {
  11. printk(KERN_ALERT " Hello World exit\n");
  12. }
  13. module_init(hello_init);
  14. module_exit(hello_exit);
  15. MODULE_AUTHOR("charles");
  16. MODULE_DESCRIPTION("A simple Hello World Module");
  17. MODULE_ALIAS("a simplest module");

 

 

编写一个简单的Makefile,如下所示:

 

点击(此处)折叠或打开

  1. obj-m := hello.o

 

使用如下命令编译Hello World模块,如下所示:

# make -C $LINUX_KERNEL_PATH M=$(pwd) modules

$LINUX_KERNEL_PATH是内核文件的绝对路径,编译后会在当前目录生成内核模块hello.ko。

加载、查看、卸载模块:

# insmod hello.ko//加载hello.ko模块

# lsmod//查看当前加载模块

# rmmod hello//卸载模块,没有.ko

posted @ 2013-01-01 16:08  legendmaner  阅读(207)  评论(0)    收藏  举报