[发明专利]一种动态链接方法及系统有效
申请号: | 201310121116.6 | 申请日: | 2013-04-09 |
公开(公告)号: | CN103218428A | 公开(公告)日: | 2013-07-24 |
发明(设计)人: | 刘高科 | 申请(专利权)人: | 深圳市九洲电器有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳中一专利商标事务所 44237 | 代理人: | 张全文 |
地址: | 518000 广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 链接 方法 系统 | ||
技术领域
本发明属于计算机软件技术领域,尤其涉及一种动态链接方法及系统。
背景技术
动态链接库(英文:Dynamic Link Library,简称:DLL)是一个包含可由多个程序同时使用的代码和数据的库,DLL不是一个可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数,函数的可执行代码位于一个DLL中,该DLL包含一个或多个已经被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。
但是动态链接依赖于系统的支持,在Linux系统下通过动态链接的函数就可以完成动态链接库的链接,而一些系统不支持动态链接。
发明内容
本发明实施例的目的在于提供一种动态链接方法及系统,以解决现有技术存在的,一些系统不支持动态链接,应用无法调用动态链接库的问题。
本发明的实施例是这样实现的,一种动态链接方法,所述方法包括以下步骤:
读取可执行连接格式ELF的库,所述可执行连接格式ELF的库包括:库函数的跳转地址和库函数的代码段;
复制库函数的跳转地址至应用的跳转表预留空间,复制库函数的代码段至应用的应用部分预留空间,所述库函数的代码段在库中和应用中的地址一致;
应用调用库函数时,在应用的跳转表中查询库函数的跳转地址,根据所述库函数的跳转地址,跳转到库函数的代码段执行;
库函数调用应用时,在应用的跳转表中查询应用对应的函数地址,根据所述应用对应的函数地址,跳转到应用的代码段执行。
本发明的实施例的另一目的在于提供一种动态链接系统,所述系统包括:
读取单元,用于读取可执行连接格式ELF的库,所述可执行连接格式ELF的库包括:库函数的跳转地址和库函数的代码段;
复制单元,用于复制库函数的跳转地址至应用的跳转表预留空间,复制库函数的代码段至应用的应用部分预留空间,所述库函数的代码段在库中和应用中的地址一致;
第一调用单元,用于应用调用库函数时,在应用的跳转表中查询库函数的跳转地址,根据所述库函数的跳转地址,跳转到库函数的代码段执行;
第二调用单元,用于库函数调用应用时,在应用的跳转表中查询应用对应的函数地址,根据所述应用对应的函数地址,跳转到应用的代码段执行。
本发明实施例通过将库函数的跳转地址以及库函数的代码段复制到应用中,使得应用和库函数可以相互调用,解决了现有技术存在的,一些系统不支持动态链接的情况下,应用无法调用动态链接库的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的动态链接方法的实现流程图;
图2是本发明实施例提供的可执行连接格式的库的结构示意图;
图3是本发明实施例提供的复制之前的应用的结构示意图;
图4是本发明实施例提供的复制之后的应用的结构示意图;
图5是本发明实施例提供的动态链接系统的模块结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了动态链接方法,所述方法的执行主体是动态库链接系统,所述方法如图1所示,具体步骤包括:
S11、读取可执行连接格式(英文:Executable and Linkable Format,简称:ELF)的库。
在步骤所述S11之前,ELF的库通过编译链接DLL和手工创建的跳转表构成,图2为可执行连接格式的库的结构示意图,所述ELF的库包括现行输出跳转表、虚拟输入跳转表和应用部分,所述现行输出跳转表存储库函数的跳转地址和属性,应用部分存储了库函数的代码段、数据和静态数据。
S12、复制所述库函数的跳转地址至应用的跳转表预留空间,复制库函数的代码段至应用的应用部分预留空间。
需要说明的是,库函数的跳转地址用于应用或者其它函数调用库函数时,通过所述库函数的跳转地址找到库函数的代码段的位置;库函数的代码段从库中复制到应用中,库函数的代码段存储的地址不变,否则通过库函数的跳转地址无法准确找到库函数的代码段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市九洲电器有限公司,未经深圳市九洲电器有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310121116.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种移动终端信息推送方法及装置
- 下一篇:网络标签聚类方法和系统