自定义Linux 内核驱动模块的编译
2015-11-24 19:38
561 查看
最近在尝试在Xen虚拟机中添加自定义设备,于是需要为设备编写驱动并将其加载进内核。
1、编写Linux内核驱动模块,即transback.c文件
module_init(hello_init);
module_exit(hello_exit);
//module_init()和module_exit()是驱动模块必须具备的两个函数,指明驱动运行时的入口和出口;
MODULE_LICENSE(“GPL”)
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
以上三个文件可有可无,介绍了驱动模块的语法规则和内容;
2、编写MakeFile文件(关于MakeFile的编写规则可以参考博客:http://blog.csdn.net/liang13664759/article/details/1771246)
KERNEL_DIR = /lib/modules/$(shell uname -r)/build
Obj-m:=transback.o
all:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
Clean:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
3、在当前目录下执行make指令进行编译
4、编译成功后,会在当前目录下生成transback.ko文件,使用insmod指令将模块加载进内核。
# insmod transback.ko //加载transback.ko模块
# lsmod |egrep trans//查看当前加载模块 lsmod会列出内核当前可加载的所有模块
# rmmod trans//卸载模块,注意没有.ko
1、编写Linux内核驱动模块,即transback.c文件
module_init(hello_init);
module_exit(hello_exit);
//module_init()和module_exit()是驱动模块必须具备的两个函数,指明驱动运行时的入口和出口;
MODULE_LICENSE(“GPL”)
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
以上三个文件可有可无,介绍了驱动模块的语法规则和内容;
2、编写MakeFile文件(关于MakeFile的编写规则可以参考博客:http://blog.csdn.net/liang13664759/article/details/1771246)
KERNEL_DIR = /lib/modules/$(shell uname -r)/build
Obj-m:=transback.o
all:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
Clean:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
3、在当前目录下执行make指令进行编译
4、编译成功后,会在当前目录下生成transback.ko文件,使用insmod指令将模块加载进内核。
# insmod transback.ko //加载transback.ko模块
# lsmod |egrep trans//查看当前加载模块 lsmod会列出内核当前可加载的所有模块
# rmmod trans//卸载模块,注意没有.ko
相关文章推荐
- Linux ldconfig命令
- linux 进线程间通信
- 在linux的环境下 连接深澜校园网的方法
- Linux学习 - Ubuntu 14.04配置Opencv环境
- Linux进程调度策略
- Laravel 5.1 超级大坑 CentOS 7 文件路径大小写敏感造成的Migrate异常
- linux socket
- arm-linux3.0自定义系统调用
- linux 多线程编程
- centos下怎样安装pip
- Linux学习笔记2-----Linux OS的文件目录
- 一键安装metasploit(linux,os x)
- gcc常用参数
- centos 安装ffmpeg 并生成文件截图
- centos 安装ffmpeg 并生成文件截图
- 生产环境中linux bonding 主备模式slave网卡切换的方法
- Linux学习笔记--2.基础概念及操作
- Linux学习笔记--2.基础概念及操作
- Linux学习笔记--2.基础概念及操作
- Linux学习笔记--2.基础概念及操作