博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Neusoft(3)增加自己的内核模块
阅读量:4571 次
发布时间:2019-06-08

本文共 1003 字,大约阅读时间需要 3 分钟。

Linux版本 Ubuntu12.04LTS,内核版本为3.2.0-26-generic-ape

具体方法如下:

1、建立源文件,假设文件目录为path,文件名为hello.c源代码如下:

#include <linux/init.h>

#include <linux/module.h>

#include <linux/kernel.h>

static int hello_init(void)

{

printk(KERN_ALERT "Hello World!/n");

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT "Bye World!/n");

}

module_init(hello_init);

module_exit(hello_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("WFJ");

注意:这里的头文件需要根据系统内核的具体情况来使用,不是所有版本都用一样的头文件,一开始我的编译错误就是因为头文件使用不当产生的。

2、写Makefile,内容如下:

obj-m := hello.o

KERNELBUILD :=/usr/src/linux-headers-3.2.0-23-generic-pae

default:

make -C $(KERNELBUILD) M=$(shell pwd) modules

clean:

rm -rf *.o *.ko *.mod.c .*.cmd .tmp_versions *.order *.symvers

这里,KERNELBUILD后面的路径也用根据你自己系统的情况决定,基本是/usc/src/your_kernel_name

3、编译源文件,直接make就可以,Makefile里的default已经给出了编译规则,clean的规则也给出了,可以自行修改。

命令所在行以Tab开头,提示缺少分隔符。

发现在linux-headers-…前面多加了一个空格

4、加载模块 insmod hello.ko

5、观察是否成功 dmesg可以看到系统的内核模块信息。

6.卸载模块 rmmod hello.ko

转载于:https://www.cnblogs.com/shenerguang/p/3398939.html

你可能感兴趣的文章
js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
查看>>
通过前端上传图片等文件的方法
查看>>
在 OC 中调用 Swift 代码
查看>>
Android仿腾讯应用宝 应用市场,下载界面, 有了进展button
查看>>
安卓|五大逆向软件下载
查看>>
5 OK6410裸机调试(不用Jlink)
查看>>
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>
教你用shell写CGI程序
查看>>
窗口 对话框 Pop Dialog 示例
查看>>
ubuntu(centos) server安装vmware tools
查看>>
数据结构之最大不重复串
查看>>
为什么要配置sdk-tools/platform-toools?
查看>>
自己动手开发更好用的markdown编辑器-07(扩展语法)
查看>>
maven dependency:tree中反斜杠的含义
查看>>
队列的循环队列
查看>>
程序中的日期格式
查看>>
大众点评CAT错误总结以及解决思路
查看>>
从0开始学爬虫3之xpath的介绍和使用
查看>>
Shell成长之路
查看>>
vim下正则表达式的非贪婪匹配
查看>>