[发明专利]动态链接库的加载方法、装置、存储介质及电子设备有效
申请号: | 202110405964.4 | 申请日: | 2021-04-15 |
公开(公告)号: | CN112948024B | 公开(公告)日: | 2022-11-04 |
发明(设计)人: | 刘京洋;姚奕涛;邹永斌 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F11/36 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 王辉;阚梓瑄 |
地址: | 310052 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 链接 加载 方法 装置 存储 介质 电子设备 | ||
本公开提供一种动态链接库的加载方法、装置、存储介质及电子设备;涉及计算机技术领域。所述方法应用于第三方云引擎,所述第三方云引擎支持在第一操作系统中运行第二操作系统下的动态链接库,所述方法包括:确定所述动态链接库中的可加载段;根据所述第一操作系统的文件映射要求,将所述动态链接库中的第一个可加载段映射到所述第一操作系统中的目标内存地址处;将所述动态链接库中的第二个可加载段按对应的文件偏移量读取到与所述目标内存地址相邻的内存中。本公开可以将第二操作系统下的大部分动态链接库文件映射到第一操作系统中,与全部使用内存模拟动态链接库相比更加节省内存。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种动态链接库的加载方法、动态链接库的加载装置、计算机可读存储介质以及电子设备。
背景技术
动态链接库(Dynamic Link Library,DLL)是Windows操作系统中实现共享函数库的一种方式,使进程可以调用不属于其可执行代码的函数。其中,动态链接库文件是一种为DLL、EXE等格式的二进制文件,允许程序共享执行任务所需的代码和资源。在Linux操作系统中,动态链接库是ELF(Executable and Linkable Format,可执行可链接文件格式)格式的so(share object,共享动态链接库)库。
其中,Windows系统中的程序可以加载DLL格式的共享库来运行,而无法从EXE二进制文件中加载并且直接调用一个ELF格式的so库。因为ELF格式不属于Windows操作系统认可的二进制文件,所以无法通过Windows操作系统的二进制检查,导致Windows操作系统的正常加载库的路径无法使用。
目前,可以将so库的内容全部读取到内存中,以在Windows操作系统中直接运行ELF格式的二进制文件。但是,该方法占用了大量内存。因此,为了减少内存的占用,提出一种动态链接库的加载方法是非常必要的。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种动态链接库的加载方法、动态链接库的加载装置、计算机可读存储介质以及电子设备,以解决现有技术中在Windows操作系统中直接加载Linux操作系统下的动态链接库时占用内存大的问题。
根据本公开的第一方面,提供一种动态链接库的加载方法,所述方法应用于第三方云引擎,所述第三方云引擎支持在第一操作系统中运行第二操作系统下的动态链接库,所述方法包括:
确定所述动态链接库中的可加载段;
根据所述第一操作系统的文件映射要求,将所述动态链接库中的第一个可加载段映射到所述第一操作系统中的目标内存地址处;
将所述动态链接库中的第二个可加载段按对应的文件偏移量读取到与所述目标内存地址相邻的内存中。
在本公开的一种示例性实施例中,所述确定所述动态链接库中的可加载段,包括:
获取所述动态链接库中库文件的程序头表,并读取所述程序头表中的各个程序头;
根据每个所述程序头的属性参数确定所述动态链接库中的可加载段。
在本公开的一种示例性实施例中,所述程序头的属性参数至少包括偏移参数和长度参数;
所述根据每个所述程序头的属性参数确定所述动态链接库中的可加载段,包括:
根据所述偏移参数在所述库文件中确定偏移位置;
基于所述偏移位置,在所述库文件中确定与所述长度参数对应的数据段;
将所述数据段确定为所述动态链接库中的可加载段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110405964.4/2.html,转载请声明来源钻瓜专利网。