linux内核模块的编译
来源:互联网 发布:淘宝什么时候延长收货 编辑:程序博客网 时间:2024/05/22 00:24
Makefile:
ifneq ($(KERNELRELEASE),)obj-m := alloc_mem.oelseKDIR := ../2-3-1/GQ2440/linux-2.6.32.2all: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 会首先找到这些模块, 把它们先加
载到内核。
- linux内核模块的编译
- Linux内核模块:模块的编译
- linux内核模块编译
- linux内核模块编译
- Linux内核模块编译
- Linux内核模块编译
- Linux 内核 模块 编译
- linux内核模块编译
- linux内核模块编译
- Linux内核模块编译
- Linux内核模块编译
- linux内核模块编译
- linux内核模块编译
- Linux编译内核模块
- Linux 编译内核模块的Makefile
- Linux内核模块的编译基础知识
- 单独编译linux内核模块的命令
- linux编译内核模块的条件
- C语言 简述 和 编译
- 学习历程之HTML篇三
- 关于javascript函数中参数传递问题
- Effective C++(二)构造/析构/赋值运算
- poj1185 炮兵阵地(状态压缩+DP)
- linux内核模块的编译
- hexdump命令使用
- Effective C++(三)内存与资源管理
- // 1、输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- asp.net中实现上传文档到服务器端的指定文件夹,并且自动生成随机数更改文档的名字
- Effective C++(四)接口设计与声明
- 数组指针和指针数组的区别
- 23个设计模式的简明教程
- 魏列彼录盘巢认卣怖技屹盐