可执行程序的运行方法、装置、电子设备及计算机存储介质制造方法及图纸

技术编号:28034133 阅读:59 留言:0更新日期:2021-04-09 23:15
本申请实施例提供了一种可执行程序的运行方法、装置、电子设备及计算机存储介质,涉及移动互联网领域。该方法包括:获取基于第一环境下编译的待处理的可执行程序;若可执行程序待加载的是基于第二环境下的目标动态链接库,并且待调用的是目标动态链接库中基于第二环境下的目标函数,则使用链接器加载预先构建的动态加载库;根据动态加载库,加载目标动态链接库,并确定目标函数的地址;根据目标函数的地址,调用目标函数,以使得可执行程序运行。本申请实施例通过预先构建好的动态加载库来加载可执行程序不能直接加载的动态链接库以及调用的函数,提高了移动操作系统的移植配效率,缩减了开发成本,加快了可执行程序的运行效率。

【技术实现步骤摘要】
可执行程序的运行方法、装置、电子设备及计算机存储介质
本申请涉及移动互联网
,具体而言,本申请涉及一种可执行程序的运行方法、装置、电子设备及计算机存储介质。
技术介绍
Glibc指GNU发布的C语言库,是Linux系统中最底层的API库。Bionic指Android系统中的C语言库,是Android系统中最底层的API库。虽然两者都是C语言库,遵循同样的C语言库标准,但是由于是不同厂商的实现,针对不同的应用目的,基于不同的编译环境、运行环境,两者之间是无法通用的,所以基于glibc环境的程序或动态C语言库是无法在Android系统上直接运行的。目前因为Android系统在移动操作系统中的广泛应用,大部分的硬件厂商只会提供基于Android的驱动程序,即基于bionic环境的驱动程序。如果需要在bionic环境下调用glibc中的函数,会存在兼容性问题。
技术实现思路
本专利技术实施例提供一种克服上述问题或者至少部分地解决上述问题的可执行程序的运行方法、装置、电子设备及计算机存储介质。第一方面,提供了一种可执行程序的运行方法,该方法包括:获取基于第一环境下编译的待处理的可执行程序;若可执行程序待加载的是基于第二环境下的目标动态链接库,并且待调用的是目标动态链接库中基于第二环境下的目标函数,则使用链接器加载预先构建的动态加载库;根据动态加载库,加载目标动态链接库,并确定目标函数的地址;根据目标函数的地址,调用目标函数,以使得可执行程序运行。在一个可能的实现方式中,根据动态加载库,加载目标动态链接库,并确定目标函数的地址,包括:调用动态加载库中预设的加载函数,加载目标动态链接库,并获取可执行程序待调用的基于第一环境下的函数,作为第一目标函数;根据第一目标函数,在动态加载库中预设的哈希表中查找记录第一目标函数的目标函数对应关系;根据目标函数对应关系,确定可执行程序待调用的基于第二环境下的第二目标函数;根据第二目标函数,确定第二目标函数的地址。在另一个可能的实现方式中,调用动态加载库中预设的加载函数,加载目标动态链接库,之前还包括:获取目标动态加载库的文件名以及加载方式;根据文件名以及加载方式,构建动态加载库中的加载函数。在又一个可能的实现方式中,根据第一目标函数,在动态加载库中预设的哈希表中查找记录第一目标函数的目标函数映射关系,之前还包括:获取操作系统中的基于第一环境下的第一目标函数,以及目标动态链接库中基于第二环境下的第二目标函数;根据第一目标函数以及第二目标函数,将功能相同的第一目标函数以及第二目标函数一一对应,得到函数对应关系;根据函数对应关系,构建动态加载库中的哈希表;哈希表存放函数对应关系。在又一个可能的实现方式中,第一环境以及第二环境,包括:第一环境为bionic环境;第二环境为glibc环境。第二方面,提供了一种可执行程序的运行的装置,该装置包括:获取装置,用于获取基于第一环境下编译的待处理的可执行程序;加载装置,用于若可执行程序待加载的是基于第二环境下的目标动态链接库,并且待调用的是目标动态链接库中基于第二环境下的目标函数,则使用链接器加载预先构建的动态加载库;确定装置,用于根据动态加载库,加载目标动态链接库,并确定目标函数的地址;运行装置,用于根据目标函数的地址,调用目标函数,以使得可执行程序运行。在一个可能的实现方式中,确定装置包括:目标确定模块,用于调用动态加载库中预设的加载函数,加载目标动态链接库,并获取可执行程序待调用的基于第一环境下的函数,作为第一目标函数;根据第一目标函数,在动态加载库中预设的哈希表中查找记录第一目标函数的目标函数对应关系;根据目标函数对应关系,确定可执行程序待调用的基于第二环境下的第二目标函数;根据第二目标函数,确定第二目标函数的地址。在又一个可能的实现方式中,目标确定模块包括:函数确定单元,用于获取目标动态加载库的文件名以及加载方式;根据文件名以及加载方式,构建动态加载库中的加载函数。在又一个可能的实现方式中,目标确定模块还包括:哈希表确定单元,用于获取操作系统中的基于第一环境下的第一目标函数,以及目标动态链接库中基于第二环境下的第二目标函数;根据第一目标函数以及第二目标函数,将功能相同的第一目标函数以及第二目标函数一一对应,得到函数对应关系;根据函数对应关系,构建动态加载库中的哈希表;哈希表存放函数对应关系。第三方面,本专利技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如第一方面所提供的方法的步骤。第四方面,本专利技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。本申请实施例提供的可执行程序的运行方法、装置、电子设备及存储介质,通过预先构建好的动态加载库来加载可执行程序不能直接加载的动态链接库,实现了在基于bionic环境下加载基于glibc环境下的动态链接库,使得基于bionic环境下的可执行程序调用到了基于glibc环境下的函数,解决了在bionic环境下兼容基于glibc的动态链接库的问题,方便非android系统中开发的程序能更快速的移植到android系统中使用,提高了移动操作系统的移植配效率,缩减了开发成本,加快了可执行程序运行效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。图1为本申请实施例提供的一种可执行程序运行的系统机构示意图;图2为本申请实施例中提供的一种可执行程序的运行的方法流程示意图;图3为本申请实施例提供的一种确定目标函数的流程示意图;图4为本申请实施例提供的动态加载库中函数的示意图图5为本申请实施例提供的一种可执行程序的运行装置的结构示意图;图6为本申请实施例提供的一种电子设备的结构示意图。具体实施方式下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本专利技术的限制。本
技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接本文档来自技高网
...

【技术保护点】
1.一种可执行程序的运行方法,其特征在于,包括:/n获取基于第一环境下编译的待处理的可执行程序;/n若所述可执行程序待加载的是基于第二环境下的目标动态链接库,并且待调用的是所述目标动态链接库中基于第二环境下的目标函数,则使用链接器加载预先构建的动态加载库;/n根据所述动态加载库,加载所述目标动态链接库,并确定所述目标函数的地址;/n根据所述目标函数的地址,调用所述目标函数,以使得所述可执行程序运行。/n

【技术特征摘要】
1.一种可执行程序的运行方法,其特征在于,包括:
获取基于第一环境下编译的待处理的可执行程序;
若所述可执行程序待加载的是基于第二环境下的目标动态链接库,并且待调用的是所述目标动态链接库中基于第二环境下的目标函数,则使用链接器加载预先构建的动态加载库;
根据所述动态加载库,加载所述目标动态链接库,并确定所述目标函数的地址;
根据所述目标函数的地址,调用所述目标函数,以使得所述可执行程序运行。


2.根据权利要求1所述的可执行程序的运行方法,其特征在于,所述根据所述动态加载库,加载所述目标动态链接库,并确定所述目标函数的地址,包括:
调用所述动态加载库中预设的加载函数,加载所述目标动态链接库,并获取所述可执行程序待调用的基于第一环境下的函数,作为第一目标函数;
根据所述第一目标函数,在所述动态加载库中预设的哈希表中查找记录所述第一目标函数的目标函数对应关系;
根据所述目标函数对应关系,确定所述可执行程序待调用的基于第二环境下的第二目标函数;
根据所述第二目标函数,确定所述第二目标函数的地址。


3.根据权利要求2所述的可执行程序的运行方法,其特征在于,所述调用所述动态加载库中预设的加载函数,加载所述目标动态链接库,之前还包括:
获取所述目标动态加载库的文件名以及加载方式;
根据所述文件名以及加载方式,构建所述动态加载库中的加载函数。


4.根据权利要求2所述的可执行程序的运行方法,其特征在于,所述根据所述第一目标函数,在所述动态加载库中预设的哈希表中查找记录所述第一目标函数的目标函数映...

【专利技术属性】
技术研发人员:周世鹏邹仕洪张广伟黄浩东
申请(专利权)人:北京元心科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1