如何将内核静态库编译连接到驱动程序中去【转】

转自:http://blog.csdn.net/ganjianfeng2003/article/details/8089551

如何将内核静态库编译连接到驱动程序中去

2010-12-07 08:27 331人阅读 评论(1) 收藏 举报

http://blog.chinaunix.net/u2/61663/showart_2404744.html

 

 

刚上邮箱的时候发现一位网友向我询问这个问题,同时发送了一个链接给我了。

上去一看,上面还留有我以前同样的提问,看看时间,都几年前在别人的帖子里面的提问了。貌似当时我遇到同样问题的时候也是到处发帖回帖询问来着的,问的地方有点多,要不是这位朋友给我链接,早不记得那个链接也有访问过,呵呵。

 

不过再往下看了后才发现,这个问题依然没有给出明确的回答,很多朋友给出的都是应用层库的链接,这和期望的内核层的链接是不一样的。

 

所以我把自己的一点理解写出来,给后面的朋友参考,期望对后来的朋友有所帮助。

 

 

我觉得在驱动程序里面编译链接内核静态库需要从三个方面注意:

1.       首先保证你正确生成了内核库文件,而非应用程序库文件;

2.       其次是除去静态库之外的驱动文件的正确性,包括内核库函数的调用和头文件的申明;

3.       正确修改驱动的Makefile

这几个方面都正确之后,就能正确地将内核库编译进指定的驱动中去。

 

 

下面详细给出个最简单的例子给大家参考,毕竟有代码参考才是大家快速编程的王道。

代码目录结构如下: 

DriverEntry.c

 

Makefile

 

lib

myalib.c

myalib.c

Makefile

1.         内核静态库文件的生成

 

内核库包含一个myalib.c和myalib.h文件,代码如下:

//myalib.c

void test(void)

{

    printk("A lib test./n");

}

 

//myalib.h

void test(void);

 

# This is the Makefile for parse.

RM = rm -f

 

CCFLAGS = -c

ARFLAG  = -rc

 

CC = gcc

AR = ar

 

lib_OBJECTS  =  myalib.o

lib_SOURCE  =  myalib.c

 

LIB = libtest.a

 

libtest.a:$(lib_OBJECTS)

         (AR)(AR)(ARFLAG) -o @@^

        

(libOBJECTS):(libOBJECTS):(lib_SOURCE)

         (CC)(CC)(CCFLAGS) -o @@^

 

clean:

         (RM)(RM)(lib_OBJECTS.o)

         (RM)(RM)(LIB)

 

在输入终端下执行”make”命令即可生成正确的内核库文件。










本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5710135.html,如需转载请自行联系原作者


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

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

相关文章

2018-2019 20165226 Exp9 Web安全基础

2018-2019 20165226 Exp9 Web安全基础 目录 一、实验内容说明及基础问题回答 二、实验过程 Webgoat准备XSS攻击 ① Phishing with XSS 跨站脚本钓鱼攻击② Stored XSS Attacks 存储型XSS攻击③ Reflected XSS Attacks 反射型XSS攻击 CSRF攻击 ① Cross Site Request Forgery(CS…

用 git 同步 Colab 与 Gitlab、Github 之间的文件

Colab 是谷歌提供的免费 Jupyter 服务,可使用 GPU。但由于每次的 VM (虚拟机)登出后所有文件都会连同VM被毁掉。如何将一个项目里的程序或数据同步到 Colab则往往比较麻烦。尽管谷歌盘也可以挂到 Colab 里用&#xff0…

keep-alive使用_如何使用Google Keep进行无忧笔记

keep-alive使用There are a lot of note-taking apps out there. Google Keep may not be as powerful as services like Evernote, but its value is in its simplicity. Let’s talk about how to make the most of it. 那里有很多笔记应用程序。 Google Keep可能不如Evernot…

ZedGraph在项目中的应用

ZedGraph在项目中的应用将数据库数据提取出来,显示成曲线图(饼状、柱状或立体图)是项目中最常见的需求。 网上搜索到的解决方法,大多归为两类,一种是利用ActiveX组件,另一种是使用.net框架自带的画图的类。…

TCP/IP:IP多播选路

本节主要讨论多播选路,是在整个互联网上的多播,我们将讨论mrouted程序的执行,该程序计算多播路由表,以及再网络之间转发多播数据包的内核函数。 多播输出处理 这个和IGMP的输出处理类似,主要要注意有环回的多播输出和没…

Leetcode#832. Flipping an Image(翻转图像)

题目描述 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。 反转图片的意思是图片中的 0 全部被 1 替换&a…

数据安全 数据销毁_如何安全销毁敏感数据CD / DVD?

数据安全 数据销毁You have a pile of DVDs with sensitive information on them and you need to safely and effectively dispose of them so no data recovery is possible. What’s the most safe and efficient way to get the job done? 您有一堆DVD,上面有敏…

cannot find -lunwind-x86_64

错误代码:; }) libtool: install: /usr/bin/install -c .libs/libunwind.lai /usr/local/lib/libunwind.la libtool: install: warning: relinking libunwind-setjmp.la libtool: install: (cd /down/libunwind-1.0/src; /bin/sh /down/libunwind-1.0/libtool --…

动态切换父元素隐藏和显示里面的子元素的动画会再一次执行吗?

代码&#xff1a;完整代码:<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> <style type"text/css"> *{ margin: 0; padding: 0; } .box{ background-color: #00B83F; } .flag{ position…

MAD huashi

name1 input("请输入一个名字") name2 input("请输入一个名词") name3 input("请输入一个形容词") name4 input("请输入一个名字") name5 input("请输入一个名字") name6 input("请输入一个长辈名字") name…

如何使用QuickConnect远程访问Synology NAS

Your Synology NAS includes a QuickConnect feature that lets you access its DiskStation Manager interface remotely. Here’s how to set it up. Synology NAS包含快速连接功能&#xff0c;可让您远程访问其DiskStation Manager界面。 设置方法如下。 You were likely gr…

深入MySQL存储引擎分析锁和排序的原理

几个问题 为什么不建议使用订单号作为主键?为什么要在需要排序的字段上加索引?for update 的记录不存在会导致锁住全表?redolog 和 binlog 有什么区别?MySQL 如何回滚一条 sql ?char(50) 和 varchar(50) 效果是一样的么?索引知识回顾 对于 MySQL 数据库而言,数据是存储在…

网络编程介绍

1. 目标:编写一个C/S架构的软件 C/S: Client--------基于网络----------Server B/S: Browser-------基于网络----------Server2. 服务端需要遵循的原则: 1. 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定 2. 对外一直提供服务,稳定运行 3. 服…

[Web开发] MySpace 发布开发接口

2007年风头最盛的Web 2.0公司应该就是Facebook &#xff0c;其一炮走红的绝招就是它的开发平台。 开发者可以为Facebook 加入各种插件&#xff0c;丰富Facebook 。为了对抗 Facebook &#xff0c; 社交网站的老大Myspace 也推出了自己开发平台 http://developer.myspace.com/c…

css段落缩进_如何缩进Google文档中的段落

css段落缩进Indenting paragraphs in Google Docs requires access to the ruler, which you’ll only find in the full web version. The ruler is not present in the mobile apps. 在Google文档中缩进段落需要访问标尺&#xff0c;而标尺只能在完整的网络版本中找到。 标尺…

卡包模板

$json_data array(); $json_data[request_id] date(YmdHis).mt_rand(10000,99999); $json_data[card_type] OUT_MEMBER_CARD; $json_data[biz_no_prefix] prex; $json_data[biz_no_suffix_len] 10; $json_data[write_off_type] qrcode; #qrcode: 二维码 dqrcode: 动态二维…

暑假个人小结

今天。。。不&#xff0c;是昨天&#xff0c;聂老大让我们写暑期总结 其中有这么一个 &#xff08;300字啊。。。我得好好想想怎么编&#xff09; 嘛&#xff0c;在这写点不敢交上去的内容吧。 7月总结 我收获了什么 很多课件 两个qq群 slay.one被人虐 联盟无畏先锋的号到了20级…

php-fpm with php-5.3.2 + APC

php-fpm 现在php官方内部已经出版本了&#xff0c;据说以后会出现在 php core 里&#xff0c;如果现在安装的话&#xff0c;可以svn得到最新代码,我抢先为快。 至于缓存&#xff0c;我用的facebook 试用的apc 测试了一段时间还很&#xff0c;满意。wget ftp://ftp.csx.cam.ac.u…

kotlin 初始化数组

为什么80%的码农都做不了架构师&#xff1f;>>> //初始化5个元素的数组&#xff0c;每个都为"0" val a:Array<String> Array(5, {"0"}) // val a:Array<String> Array(5, {"0"}) println(a.joinToString(separator &…

Tomcat - Tomcat安装

Tomcat官网&#xff1a;http://tomcat.apache.org/ 准备&#xff1a;JAVA环境布置完成 一、Windows平台 1. 版本选择 1&#xff09; 进入官网 2&#xff09; 查看版本匹配 官网说明 https://tomcat.apache.org/whichversion.html 3&#xff09; 需要查看已安装JAVA版本请打开终…