linux内核驱动模块的编译及加载
主机:Windows 7旗舰版,VMware7.1.2,Fedora9
编译环境:arm-linux-gcc 4.4.3
Linux版本:linux-2.6.32.2
busybox版本:busybox-1.19.4
目标板:友善之臂micro2440
编译使用内核模块的方法:
编写一个简单的Linux内核模块Hello World,hello.c内容如下:
点击(此处)折叠或打开
- #include <linux/init.h>
- #include <linux/module.h>
- MODULE_LICENSE("Dual BSD/GPL");
- static int hello_init(void)
- {
- printk(KERN_ALERT " Hello World enter\n");
- return 0;
- }
- static void hello_exit(void)
- {
- printk(KERN_ALERT " Hello World exit\n");
- }
- module_init(hello_init);
- module_exit(hello_exit);
- MODULE_AUTHOR("charles");
- MODULE_DESCRIPTION("A simple Hello World Module");
- MODULE_ALIAS("a simplest module");
编写一个简单的Makefile,如下所示:
点击(此处)折叠或打开
- 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

浙公网安备 33010602011771号