linux内核模块的编译

Makefile:

ifneq ($(KERNELRELEASE),)

obj-m := alloc_mem.o

else
	
KDIR := ../2-3-1/GQ2440/linux-2.6.32.2
all:
	make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
	rm -f *.ko *.o *.mod.o *.mod.c *.symvers  modul*

endif

注意内核要先编译了才行要不会出现错误!!

hello.c:

#include <linux/module.h>
#include <linux/init.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("www.enjoylinux.cn");
MODULE_DESCRIPTION("Hello world module");

static int __init hello_init(void)
{
	printk(KERN_ERR "hello world!\n");
	return 0;
}
static void __exit hello_exit(void)
{
	printk(KERN_EMERG "hello exit!\n");
}

module_init(hello_init);
module_exit(hello_exit);

编译之后会生成

lxiang@lxiang-Aspire-5750G:~/workplace/arm_device_driver/nfs_root/rootfs/code_enjoy/2-1-2$ ls
hello.c   hello.mod.c  hello.o   Makefile~      Module.symvers
hello.ko  hello.mod.o  Makefile  modules.order

这些东西

以超级管理员加载内核模块

[root@FriendlyARM 2-1-2]# insmod hello.ko
hello world!                                                                    
[root@FriendlyARM 2-1-2]# rmmod hello                                           
hello exit!                                                                     
rmmod: module 'hello' not found


注意模块的版本信息和所运行的系统是否匹配如果不匹配会出现"Invalid module format"错误

使用modinfo来查看是否和当前匹配

lxiang@lxiang-Aspire-5750G:~/workplace/arm_device_driver/nfs_root/rootfs/code_enjoy/2-1-2$ sudo modinfo hello.ko
filename:       /home/lxiang/workplace/arm_device_driver/nfs_root/rootfs/code_enjoy/2-1-2/hello.ko
description:    Hello world module
author:         www.enjoylinux.cn
license:        GPL
depends:        
vermagic:       2.6.32.2-FriendlyARM mod_unload ARMv4


加载 modprobe (modprobe hello)
modprobe 如同 insmod, 也是加载一个模块到内
核。它的不同之处在于它会根据文件
/lib/modules/<$version>/modules.dep
来查看要加载的模块, 看它是否还依赖于其他模块,如
果是,modprobe 会首先找到这些模块, 把它们先加
载到内核。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值