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

linux内核驱动模块的编译及加载
主机:Fedora9
编译环境:arm-linux-gcc 4.4.3

编译自己写的内核驱动,需要有当前操作系统的内核源码,并做了一些简单的准备工作,才能使用内核的源码,来编译自己的驱动
内核手动编译指导:

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

#include 
#include 
MODULE_LICENSE("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("ephraim");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");

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

SOURCE_TREE=/usr/src/linux-headers-3.14.0-031400-generic
MOD_NAME=hello
obj-m := $(MOD_NAME).o
all :
	$(MAKE) -C $(SOURCE_TREE)  M=$(PWD) modules
	
clean:
	rm -rf *.o *.mod.c $(MOD_NAME).ko Module.symvers modules.order .*.cmd .tmp_versions

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

# insmod hello.ko	 //加载hello.ko模块
# insmod -f hello.ko	 //强行加载hello.ko模块
# lsmod	   //查看当前加载模块
# rmmod hello	 //卸载模块,没有.ko
# rmmod -f module  //强行卸载驱动

资料来源:
http://blog.chinaunix.net/uid-28440799-id-3431853.html
内核版本比较多,源码和当前操作系统常常会不一致:
insmod会报错:Invalid module format(加载内核时的报错)
可以下载对应的源码编译升级内核
 

你可能感兴趣的:(软件配置)