[发明专利]一种编译链接方法及装置在审
申请号: | 201910229059.0 | 申请日: | 2019-03-25 |
公开(公告)号: | CN111736839A | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 张雁;包斌;张清华;张必红;叶寒栋;蒋奕 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 冯艳莲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编译 链接 方法 装置 | ||
一种编译链接方法及装置,在该方法中,在对第一模块进行编译时,首先生成与该第一模块对应的符号定义表和符号引用表,然后,在编译完成后,加载该第一模块。在该第一模块完成加载后,对该符号定义表和该符号引用表中的符号进行解析,获取该符号定义表以及该符号引用表中的每个符号的运行地址。由于在编译时创建符号定义表和符号引用表,由于这两个表中的符号是在加载完成后进行解析的,从而系统在启动过程中不需要对该符号定义表和符号引用表中的符号进行解析,可以减少系统在启动过程中需要解析的符号的数量,从而可以减少系统启动时的加载时长,可以提高系统的开机速度。
技术领域
本申请涉及计算机技术领域,尤其涉及一种编译链接方法及装置。
背景技术
应用程序是为了完成特定任务而被开发的计算机程序。由于实现该特定任务所需的功能可能较多,例如,可能需要查询功能、计算功能以及输出功能等,因此,应用程序通常会分为多个模块(每个模块可以实现一个功能)独立地开发和编译,然后,形成与每个模块对应的可重定位的文件,通过链接器将多个可重定位的文件链接成一个可执行文件,该可执行文件在计算机中的相关硬件上运行时,则可以完成该特定任务。
动态链接是目前常用的一种应用程序的链接方法。动态链接的思想是:首先建立动态链接共享库,该动态链接共享库中包括各个应用程序的模块可能会使用的符号。当动态链接共享库加载到计算机系统时,需要对该动态链接共享库所包括的符号进行解析,获取该动态链接共享库的符号表以及重定位表。在应用程序的编译过程中,使用该符号表中符号名对应用程序所包括的模块进行编译,在应用程序运行时,通过重定位表获取与该符号名对应的内存地址,进而动态地加载该模块。
然而,由于动态链接共享库在加载过程中需要解析大量的符号来生成符号表以及重定位表,从而给计算机系统的启动过程带来较大的时延。
发明内容
本申请实施例提供一种编译链接方法及装置,用以减少计算机系统在启动过程的时延。
第一方面,提供一种编译链接方法,在该方法中,在对第一模块进行编译时,首先生成与该第一模块对应的符号定义表和符号引用表,其中,符号定义表包括在该第一模块中定义的至少一个第一符号以及与每个第一符号对应的第一地址,该第一地址为该第一符号在该第一模块中的地址,该符号引用表包括该第一模块引用第二模块的至少一个第二符号以及与每个第二符号对应的第二地址,该第二地址为该第二符号在该第二模块中的地址,第一符号或所述第二符号包括函数和/或变量,然后,在编译完成后,加载该第一模块。在该第一模块完成加载后,对该符号定义表和该符号引用表中的符号进行解析,获取该符号定义表以及该符号引用表中的每个符号的运行地址。
在上述技术方案中,在编译时创建符号定义表和符号引用表,由于这两个表中的符号是在加载完成后进行解析的,从而系统在启动过程中不需要对该符号定义表和符号引用表中的符号进行解析,可以减少系统在启动过程中需要解析的符号的数量,从而可以减少系统启动时的加载时长,可以提高系统的开机速度。
在一种可能的设计中,在生成与该第一模块对应的符号定义表和符号引用表后,使用所述符号定义表和所述符号引用表对所述第一模块所包括的代码段和数据段进行编译处理,所述数据段包括与所述第一模块对应的虚函数表和/或接口函数表。
在上述技术方案中,使用符号定义表和符号引用表将第一模块的代码段和数据段中的内容进行替换后,可以实现将符号定义表和符号引用表中的符号进行隐藏的效果,从而,该符号定义表和符号引用表中的符号均可以不用导出,可以进一步节省第一模块的符号表的体积,可以节省存储资源。
另外,使用符号定义表和符号引用表将第一模块的代码段和数据段中的内容进行替换后,则可以通过符号定义表和符号引用表中的表项(例如,每个符号的表述)来实现访问模块中的符号,从而不用省略现有技术中在子程序调用时需要先访问程序链接表(procedure linkage table,PLT)代码,然后在根据PLT代码查找到该子程序的地址的过程,可以降低子程序调用过程中的开销。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910229059.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:地图搜索中以线路为中心的周边搜索方法及装置
- 下一篇:一种舒适出风的空调器