简单的内核模块编译、加载
来源:互联网 发布:小米手机网络重置 编辑:程序博客网 时间:2024/06/06 01:15
写一个比较简单的内核模块(打印出“hello world”),实现内核模块的编译/装载与卸载,代码如下:
hello.c
#include "linux/init.h"#include "linux/kernel.h"#include "linux/module.h" //3个头文件包含了内核提供的所有内核模块的头文件static int __init hello_init(void) { printk(KERN_ALERT "Hello world!\n"); return 0;}static void __exit hello_exit(void) { printk(KERN_ALERT "Goodbye!\n");}module_init(hello_init); //告诉内核当内核模块第一次运行时哪个函数将被执行module_exit(hello_exit); //内核模块被卸载时被执行的函数MODULE_LICENSE("GPL"); //开源licenseMODULE_DESCRIPTION("hello"); //文件描述
Makefile:
obj -m :=hello.o#内核源代码位置,这里是标准情况下链接到正在使用的内核KERNELBUILD :=/lib/modules/$(shell uname -r)/build default: #编译连接目标 make -C $(KERNELBUILD) M=$(shell pwd) modules #以下内容不是必须 ,属于执行和清理部分 echo insmod ./hello.ko to turn it on clean: rm -rf *.o *.ko *.mod.c .*.cmd *.markers *.order *.symvers .tmp_versions
执行:
make //生成内核模块 ko文件
sudo insmod ./hello.ko
//装在内核模块dmesg | tail
//查看输出信息
sudo rmmod hello //卸载内核模块
dmesg | tail //查看输出信息
0 0
- 简单的内核模块编译、加载
- 内核模块的编译、加载与卸载
- 最简单的内核模块编译记录
- Linux内核编译,内核模块编译加载
- Linux 2.6内核下编译可以加载的内核模块
- Linux 2.6内核下编译可以加载的内核模块
- 编译一个自己的内核模块,并加载进内核
- Linux内核如何加载编译进内核的模块
- OK6410 linux 内核模块加载--LED内核模块编译加载
- 内核模块的加载
- 内核模块的编写、编译、加载、卸载;Makefile的编写
- Linux 2.6内核的编译步骤及模块动态加载
- Linux 2.6内核的编译步骤及模块动态加载
- Linux内核模块的编译、加载和卸载
- Linuxx 2.6内核可加载模块的编译
- linux内核驱动模块的编译及加载
- linux内核驱动模块的编译及加载
- Linux 内核的编译步骤及模块动态加载
- Xcode CopyPngFile 错误解决方法
- iOS 程序进入后台,包括用户上拉快捷菜单导致程序失去活跃的研究
- oracle中number和number(9,2),有什么区别
- cc、gcc、g++、CC的区别概括 /bin/bash cc 命令找不到
- 如何反编译java字节码文件---使用javap反编译Java字节码文件
- 简单的内核模块编译、加载
- opengGL MFC混合编程
- 23种设计模式(2):工厂方法模式
- 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script
- linux系统调用reboot
- 积跬步,聚小流-------关于UML时序图
- RT-Thread 学习笔记(九)---开启基于SD卡中的 Elm FatFS 文件系统
- Debian下将WildFly作为Service启动
- solr查询优化(实践了一下效果比较明显)