[发明专利]一种动态加载方法、目标文件的制作方法及装置有效
申请号: | 201711160959.1 | 申请日: | 2017-11-20 |
公开(公告)号: | CN109814939B | 公开(公告)日: | 2021-10-15 |
发明(设计)人: | 陈新中;黄基松;黄雁辉 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 冯艳莲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 加载 方法 目标 文件 制作方法 装置 | ||
1.一种动态加载方法,其特征在于,包括:
在终端设备中的应用程序的运行过程中,加载动态链接库文件,所述动态链接库文件中包含能够实现所述应用程序中的特定功能的符号;所述符号包括函数和/或变量;
从所述应用程序的源文件中读取第一index;
从由index和符号地址组成的全局符号表中确定与所述第一index对应的第一符号地址;所述第一符号地址用于指示能够实现所述特定功能的符号的物理地址;
根据所述第一符号地址从所述动态链接库文件中调用所述符号,完成所述应用程序的运行。
2.如权利要求1所述的方法,其特征在于,所述加载动态链接库文件,包括:
将所述动态链接库文件存储于所述终端设备的内存中;
从所述动态链接库文件中的st_name代码中读取所述第一index;
根据第一index与第二符号地址的映射关系确定与所述第一index对应的第二符号地址;所述第二符号地址用于指示所述动态链接库文件中能够实现所述特定功能的符号的逻辑地址;
对所述第二符号地址进行重定位,得到所述第一符号地址;
将所述第一符号地址填充在所述动态链接库文件中,完成所述动态链接库文件的加载。
3.如权利要求2所述的方法,其特征在于,在所述全局符号表中确定与所述第一index对应的第一符号地址,包括:
构建所述全局符号表;所述全局符号表中包含第一index与第一符号地址之间的映射关系;
根据所述第一index与第一符号地址的映射关系确定与所述第一index对应的第一符号地址。
4.如权利要求2所述的方法,其特征在于,在所述全局符号表中确定与所述第一index对应的第一符号地址,包括:
构建所述全局符号表;所述全局符号表中包含所述第一符号地址,且所述第一符号地址按照一定的顺序排序;
读取所述全局符号表中排序号与所述第一index的值相同的第一符号地址。
5.如权利要求3所述的方法,其特征在于,根据所述第一index与第一符号地址的映射关系确定与所述第一index对应的第一符号地址,包括:
确定所述第一index所属的功能模块;所述功能模块用于指示所述动态链接库文件中能够实现所述特定功能的模块;
从所述全局符号表中确定与所述功能模块对应的模块符号表;所述模块符号表中包含所述功能模块中的符号的第一符号地址与第一index的映射关系;所述符号用于指示所述功能模块中用于实现所述特定功能的函数和/或变量;
从所述模块符号表中的第一符号地址与第一index的映射关系读取与所述第一index对应的第一符号地址。
6.如权利要求5所述的方法,其特征在于,确定所述第一index所属的功能模块,包括:
获取与所述第一index关联的第二index;
从功能模块与第二index之间的映射关系确定与所述第二index对应的功能模块。
7.一种终端设备,其特征在于,包括:
加载模块,用于在所述终端设备中的应用程序的运行过程中,加载动态链接库文件,所述动态链接库文件中包含能够实现所述应用程序中的特定功能的符号;所述符号包括函数和/或变量;
读取模块,用于从所述应用程序的源文件中读取第一index;
确定模块,用于从由index和符号地址组成的全局符号表中确定与所述第一index对应的第一符号地址;所述第一符号地址用于指示能够实现所述特定功能的符号的物理地址;
符号调用模块,用于根据所述第一符号地址从所述动态链接库文件中调用所述符号,完成所述应用程序的运行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711160959.1/1.html,转载请声明来源钻瓜专利网。