Linux:编译生成内核模块(来自国嵌的视频教学)

内核模块的代码文件

文件 yyyy.c  (yyyy可以与模块xxxx同名也可以不同名)
(类似模板的东西) 
#ifndef __KERNEL__
#define __KERNEL__
#endif

#ifndef MODULE             //直接添加到内核时去掉,生成模块时保留
#define MODULE
#endif

 #include <*.h>

...

MODULE_LICENSE("GPL"); //许可证申明,用来告知内核,该模块带有一个许可证
MODULE_AUTHOR("you name"); //作者申明(可选)
MODULE_DESCRIPTION("aaaa");//模块描述(可选)
MODULE_VERSION("V1.0"); //模块版本(可选)
MODULE_ALIAS("a bbbb module"); //模块别名(可选)

static  int  __inti  xxxx_init(void)
{
}

static  void  __inti  xxxx_exit(void)
{
}

... // 其他函数
...

module_init(xxxx_init);
module_exit(xxxx_exit);

内核编译的Makefile

Makefile 
(类似模板的东西)
ifneq ($(KERNELRELEASE),)
obj-m := xxxx.o
xxxx-objs := yyyy.o  (如有其它源文件继续添加 zzzz.o  ...)(如yyyy = xxxx 且只有一个源文件,该行可去掉)
 else
KDIR := /lib/module/2.6.28.6/build
all:
         make -C $(KDIR ) M=$(PWD)  modules
clean:
         rm  -f  *.ko  *.o  *.mod.o  *.mod.c  *.symvers
endif

其中 /lib/module/2.6.28.6/build 为创建内核代码树所生成的目录,创建内核代码数: http://blog.csdn.net/leaglave_jyan/article/details/6652444

编辑好源文件和Makefile后,该目录下运行 make 即可编译生成 模块 xxxx.ko 文件

使用 insmod  xxxx.ko 添加

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS开发UI篇—实现一个私人通讯录小应用(二)

一、实现功能说明 &#xff08;1&#xff09;点击注销按钮&#xff0c;弹出一个对话框&#xff0c;点击确定后移除当前栈顶的控制器&#xff0c;返回开始界面&#xff0c;点击取消&#xff0c;不做任何操作。 注意&#xff1a;注销按钮的单击事件已经进行了连线。实现-(void)ac…

IIS内部错误:500之解决方案

将自己很早以前做的一个asp.net网站从自己的笔记本上迁移到公司电脑上&#xff0c;在作好相关配置后&#xff0c;打开网站首页&#xff0c;出现HTTP500错误&#xff0c;上网查了发现这是服务器内部错误。 接着我查看了下系统事件日志信息&#xff0c;发现了错误: 服务器无法加…

AGPM(高级组策略管理)3.0之二操作

续AGPM&#xff08;高级组策略管理 &#xff09;3.0之一部署。1、设置默认AGPM服务器打开组策略管理控制台&#xff08;GPMC.MSC&#xff09;&#xff0c;打开默认的Default Domain Policy进行编辑。打开用户配置、策略、管理模板、Windows 组件、AGPM&#xff0c;进行如下设置…

Linux:串口通信

以前跟着做过VxWorks的开发&#xff0c;主要通信方式是串口&#xff0c;因为底层BSP包已经做好了&#xff0c;串口通信非常简单。后来接触Linux&#xff0c;在一块OK6410上跑Linux串口通信&#xff0c;才发现原来天真的以为甚是简单的串口变得如此的不简单。 #include <ter…

结合netstat和awk命令来统计网络连接数

结合netstat和awk命令来统计网络连接数netstat -n | awk /^tcp/ {state[$NF]} END {for(key in state) print key,"\t",state[key]}会得到类似下面的结果&#xff0c;具体数字会有所不同&#xff1a;LAST_ACK 1SYN_RECV 14ESTABLISHED 79FIN_WAIT1 28FIN_WAIT2 3CLOS…

屏幕实战效果解析:IPS/TFT/AMOLED/SLCD

现在手机市场上&#xff0c;智能手机种类繁多&#xff0c;手机屏幕材质也是五花八门。对于一般消费者来说&#xff0c;一款手机是否值得购买&#xff0c;除了关心它的硬件参数以外&#xff0c;更重要的一点就是看它的屏幕。除了屏幕尺寸以外&#xff0c;影响着大家对该手机的第…

结构体继承自结构体

C Code: /*功能&#xff1a;结构体继承自结构体结论&#xff1a;1. 结构体可以继承自结构体2. 结构体同样有构造函数和析构函数*/#include <iostream>using namespace std;struct MNode{int val;MNode(){val 10;cout<<"MNode(): "<<val<<e…

非对称加密算法(公钥和私钥)

非对称加密算法需要两个密钥来进行加密和解密&#xff0c;这两个秘钥是公开密钥&#xff08;public key&#xff0c;简称公钥&#xff09;和私有密钥&#xff08;private key&#xff0c;简称私钥&#xff09;。 公钥&#xff08;Public Key&#xff09;与私钥&#xff08;Pri…

Linux:定时器

引子&#xff1a;使用OK6410 通过 IMU_EV30 采集 ADIS16405 的数据&#xff0c;采集频率为100Hz&#xff0c;需要10ms的定时器。首先考虑了a POSIX per-process timer&#xff0c;后发现板子负担轻的时候还行&#xff0c;负担重了定时很不精确&#xff0c;最后使用PWM定时器解决…

RHEL5+Postfix+MySql+IMAP+MailDrop+ExtMail(5)

十三、安装Extman-0.2.2<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1、安装及基本配置#tar zxvf extman-0.2.2.tar.gz# mv extman-0.2.2 /var/www/extsuite/extman修改配置文件以符合本例的需要&#xff1a;# vim /var/www…

如何解决Android SDK无法下载Package的问题(.net)

有些用户在安装好Android SDK后&#xff0c;打开Android SDK Manager下载API时一直显示“Done loading packages”却迟迟不能前进&#xff0c;界面显示的Package空空如也。自己也出现了这种情况&#xff0c;于是乎&#xff0c;把自己成功解决此问题的方法分享给大家。 如何解决…

C# 中 for和foreach 性能比较,提高编程性能

From: http://www.cnblogs.com/yzxchoice/archive/2007/12/15/995949.html 在很多情况下for和foreach具有同样的功能,选择for还是foreach很多人可能都是看自己的喜好&#xff0c;本测试试图通过 来真是测试数据来比较他们的执行效率。希望能给大家对他们的时候带来一些帮助。 …

AES与RSA混合加密完整实例

前段时间看到一篇文章讲如何保证API调用时数据的安全性&#xff08;传送门&#xff1a;https://blog.csdn.net/ityouknow/article/details/80603617&#xff09;&#xff0c;文中讲到利用RSA来加密传输AES的秘钥&#xff0c;用AES来加密数据&#xff0c;并提供如下思路&#xf…

Linux: 两个USB摄像头的数据采集问题

引子&#xff1a; 课题需要&#xff0c;同时采集两个摄像头数据&#xff0c;频率不高&#xff0c;但要同时。中间遇到的问题&#xff0c;唉一言难尽啊&#xff01; 为了图省事使用UVC摄像头&#xff0c;但是板子是USB1.1接口的&#xff0c;故挑选兼容USB1.1的UVC驱动的摄像头&…

获取指定日期的常用前后节点(月初月末周一周末等等)

获取指定日期的常用前后节点&#xff08;月初月末周一周末等等&#xff09; 原文:获取指定日期的常用前后节点&#xff08;月初月末周一周末等等&#xff09;注&#xff1a;周节点方面是根据中国习惯&#xff0c;视周一为起&#xff0c;周日为末。 /*-------------------------…

DB2在linux安装

linux下安装DB2的详细步骤第一步下载db2v8.1数据包,IBM网站有了,但是要钱了,呵呵第二步把下载下来的包(名称有可能是:DB2_V81_PE_LNX_32_NLV.tar)放进opt目录第三步用命令解压DB2_V81_PE_LNX_32_NLV.tar如下:linux:~#cd /optlinux:/opt # tar -xvf DB2_V81_PE_LNX_32_NLV.tar第…

封送处理您的数据:利用 COM 和 Windows 2000 的高效传输数据的技术

From: http://blog.csdn.net/zhoujianhei/article/details/1844319 摘要 您所选择的数据传输方式在分布式应用程序中是非常重要的。Windows 2000 提供了几种新的特性&#xff0c;可以更加高效地进行数据传输。轻量级的处理程序使得您能够编写智能代理&#xff0c;它们能够缓存结…