添加内核模块之入门helloworld.ko
2011-01-05 21:45
417 查看
首先 是从一个西邮学生看到的,比较好的入门方式:
首先是hello.c的文件:主要要说明对内核的编程只能使用内核头文件,所以通常我们都使用makefile来控制编译过程
然后编写Makefile:make的注释 #后面的字符
编译生成hello.ko
insmod hello.ko 加载内核模块
dmesg 查看开机过程中的信息,
首先是hello.c的文件:主要要说明对内核的编程只能使用内核头文件,所以通常我们都使用makefile来控制编译过程
#include "linux/init.h" #include "linux/module.h" #include "linux/kernel.h" //必选 //模块许可声明 MODULE_LICENSE("Dual BSD/GPL"); //模块加载函数 static int hello_init(void) { printk(KERN_ALERT "hello,I am edsionte/n"); return 0; } //模块卸载函数 14 static void hello_exit(void) 15 { 16 printk(KERN_ALERT "goodbye,kernel/n"); 17 } 18 //模块注册 19 module_init(hello_init); 20 module_exit(hello_exit); 21 //可选 22 MODULE_AUTHOR("edsionte Wu"); 23 MODULE_DESCRIPTION("This is a simple example!/n"); 24 MODULE_ALIAS("A simplest example");
然后编写Makefile:make的注释 #后面的字符
obj-m += hello.o #generate the path CURRENT_PATH:=$(shell pwd) #the current kernel version number LINUX_KERNEL:=$(shell uname -r) #the absolute path LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL) #complie object all: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules #clean clean: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
编译生成hello.ko
insmod hello.ko 加载内核模块
dmesg 查看开机过程中的信息,
相关文章推荐
- linux驱动入门-hello设备驱动程序编写及内核的更新(网卡的添加)
- 第一个内核模块Hello.ko代码
- linux添加可加载内核模块(LKM入门)
- ubuntu helloworld 内核模块编写
- Linux下hello.ko内核模块制作的全过程
- Linux驱动开发1--内核入门之hello模块
- Linux下hello.ko内核模块制作的全过程
- Linux下hello.ko内核模块制作
- hello_world-1.0之原始的内核模块编程
- linux内核之旅---"hello world"模块
- .Linux设备驱动程序学习(0)——设备驱动介绍& Hello, world!模块 内核参数传递
- Linux下hello.ko内核模块制作的全过程
- 加载模块是提示“insmod: error inserting 'helloworld.ko': -1 Invalid module format”
- hello world及内核模块 && MTK平台添加kernel module && 生成.ko的驱动改生成.o
- linux 内核模块ko入门
- "hello world" 简单内核模块
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- 我的第一个内核模块——Hello,kernel
- Swift入门Hello, world
- hello内核模块编译的全过程