[发明专利]一种程序链接方法及装置有效
申请号: | 200910105198.9 | 申请日: | 2009-01-21 |
公开(公告)号: | CN101782860A | 公开(公告)日: | 2010-07-21 |
发明(设计)人: | 王伟;杜开田 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 链接 方法 装置 | ||
1.一种程序链接方法,其特征在于,包括如下步骤:
通过解析第一程序和第二程序,获取所述第一程序引用所述第二程序中 的第一符号,以及获取所述第一符号在所述第一程序中的第一地址和所述第 一符号在所述第二程序中的第二地址;所述第一符号包括函数和/或变量;其 中,所述第一程序由第一源代码和第二虚拟源代码编译并静态链接生成,所 述第二虚拟源代码为所述第一源代码提供需要引用的函数和/或变量;其中, 所述通过解析第一程序和第二程序,获取所述第一符号在所述第一程序中的 第一地址和所述第一符号在所述第二程序中的第二地址的步骤包括:获取所 述第一程序的符号表和所述第二程序的符号表,通过查找所述第一程序的符 号表和所述第二程序的符号表,获取所述第一符号在所述第一程序中的第一 地址和在所述第二程序中的第二地址;
根据所述第一地址和所述第二地址,对所述第一符号进行重定向,包括:
当所述第一符号为函数时,修改所述第一程序中所述第一地址的第一条 指令为跳转到所述第二程序中的所述第二地址的跳转指令;
当所述第一符号为变量时,修改所述第一程序引用所述第二程序中变量 的指令中的所述变量的地址为所述变量在所述第二程序中的地址;或者保持 所述第一程序引用所述第二程序中变量的指令中的所述变量的地址不变,并 将所述第二程序中引用所述变量的指令中引用的变量地址重定向到所述变量 在所述第一程序中的地址。
2.如权利要求1所述的程序链接方法,其特征在于,所述获取所述第一 程序的符号表和所述第二程序的符号表的方法包括:
获取所述第一程序的符号表索引地址和所述第二程序的符号表索引地 址;
通过所述第一程序的符号表索引地址和所述第二程序的符号表索引地 址,获取所述第一程序的符号表和所述第二程序的符号表;
所述符号表索引地址位于所述第一程序和所述第二程序中的固定地址。
3.如权利要求1所述的程序链接方法,其特征在于,所述获取所述第一 程序的符号表和所述第二程序的符号表的方法包括:
通过符号表地址获取所述第一程序的符号表和所述第二程序的符号表;
所述符号表地址位于所述第一程序和所述第二程序中的固定地址。
4.如权利要求1所述的程序链接方法,其特征在于,所述获取符号表的 步骤包括:
根据符号表特征码,搜索所述第一程序和所述第二程序中符合所述符号 表特征码的表项,根据符合所述符号表特征码的表项获取所述第一程序的符 号表和所述第二程序的符号表。
5.如权利要求1所述的程序链接方法,其特征在于,所述程序链接方法 进一步包括如下步骤:
通过解析所述第一程序和所述第二程序,获取所述第二程序引用所述第 一程序中的第二符号,以及获取所述第二符号在所述第一程序中的第三地址 和所述第二符号在所述第二程序中的第四地址;所述第二符号包括函数和/或 变量;
根据所述第三地址和所述第四地址,对所述第二符号进行重定向。
6.如权利要求5所述的程序链接方法,其特征在于:
所述第二程序由第三虚拟源代码和第四源代码编译并静态链接生成,所 述第三虚拟源代码为所述第四源代码提供需要引用的函数和/或变量。
7.如权利要求5所述的程序链接方法,其特征在于,所述通过解析所述 第一程序和所述第二程序,获取所述第二符号在所述第一程序中的第三地址 和所述第二符号在所述第二程序中的第四地址的步骤包括:
获取所述第一程序的符号表和所述第二程序的符号表,通过查找所述第 一程序的符号表和所述第二程序的符号表,获取所述第二符号在所述第一程 序中的第三地址和在所述第二程序中的第四地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910105198.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:电子门票票务系统和方法
- 下一篇:岸基供电多点监控深海摄像系统