程序编译和启动方法、设备及存储介质技术

技术编号:34398101 阅读:44 留言:0更新日期:2022-08-03 21:34
本申请实施例提供一种程序编译和启动方法、设备及存储介质。在本申请实施例中,针对分离模式的待编译程序,在待编译程序编译过程中,可将待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,进而得到待编译程序的镜像文件。待编译程序依赖的分离组件具有独立的镜像文件。这样,可实现待编译程序和其依赖的分离组件的单独编译,得到独立的镜像文件,实现待编译程序与其依赖的分离组件的分离。尤其在对待编译程序进行编译时,将待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,而无需在待编译程序的编译过程中对分离组件进行编译,可降低待编译程序的编译的数据量,有助于提高待编译程序的编译效率。有助于提高待编译程序的编译效率。有助于提高待编译程序的编译效率。

【技术实现步骤摘要】
程序编译和启动方法、设备及存储介质


[0001]本申请涉及物联网
,尤其涉及一种程序编译和启动方法、设备及存储介质。

技术介绍

[0002]随着物联网技术的不断发展,物联网(Internet of Things,IoT)设备上的功能越来越多,使得物联网应用系统变得越来越复杂,依赖的组件越来越丰富,导致物联网软件包也越来越大,进而导致物联网软件包编译时间长。

技术实现思路

[0003]本申请的多个方面提供一种程序编译和启动方法、设备及存储介质,用以提高程序编译效率。
[0004]本申请实施例提供一种程序编译方法,包括:
[0005]获取待编译程序的配置文件;
[0006]从所述待编译程序的配置文件中,获取所述待编译程序的编译模式信息;
[0007]在所述待编译程序的编译模式信息为分离模式的情况下,对所述待编译程序进行编译;
[0008]在所述待编译程序编译过程中,将所述待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,以得到所述待编译程序的镜像文件;其中,所述分离组件具有独立的镜像文件。
[0009]本申请实施例还提供一种程序启动方法,包括:
[0010]获取待启动程序的镜像文件至内存中;
[0011]对所述待启动程序的镜像文件进行解析,以得到所述待启动程序的镜像文件包含的信息段;所述信息段包括动态信息段;
[0012]从所述动态信息段中,确定所述待启动程序依赖的分离组件;
[0013]获取所述分离组件的镜像文件至所述内存中;
[0014]根据所述待启动程序的镜像文件和所述分离组件的镜像文件,启动所述待启动程序。
[0015]本申请实施例还提供一种计算设备,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
[0016]所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行上述程序编译方法和/或程序启动方法中的步骤。
[0017]本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述程序编译方法和/或程序启动方法中的步骤。
[0018]在本申请实施例中,针对分离模式的待编译程序,在待编译程序编译过程中,可将
待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,进而得到待编译程序的镜像文件。待编译程序依赖的分离组件具有独立的镜像文件。这样,可实现待编译程序和其依赖的分离组件的单独编译,得到独立的镜像文件,实现待编译程序与其依赖的分离组件的分离。尤其在对待编译程序进行编译时,将待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,而无需在待编译程序的编译过程中对分离组件进行编译,可降低待编译程序的编译的数据量,有助于提高待编译程序的编译效率。在后续待编译程序升级时,可对待编译程序、待编译程序依赖的组件进行单独升级,而无需升级整个文件包,可实现更细颗粒度的升级。例如,若需要升级的对象为待编译程序依赖的分离组件,可单独升级分离组件;若需要升级的对象为待编译程序的其它模块,可单独升级其它模块,而无需升级分离组件,从而实现更细颗粒度的升级。
附图说明
[0019]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0020]图1为本申请实施例提供的嵌入式操作系统的结构框架图;
[0021]图2为本申请实施例提供的程序编译方法的流程示意图;
[0022]图3为本申请实施例提供的应用程序与组件之间的依赖关系示意图;
[0023]图4为本申请实施例提供的程序启动方法的流程示意图;
[0024]图5为本申请实施例提供的动态引擎的功能示意图;
[0025]图6为本申请实施例提供的计算设备的结构示意图。
具体实施方式
[0026]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027]嵌入式操作系统是面向嵌入式系统特定的硬件体系和用户要求而设计的,是嵌入式系统的重要组成部分,是实现嵌入式系统功能的关键。如图1所示,嵌入式操作系统可分为内核、组件和应用层等。其中,内核用于负责管理嵌入式系统的进程、内存、设备驱动程序、文件和网络系统等,可为应用程序(APP)提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个应用程序对某部分硬件操作的时间和时长。
[0028]组件是指为应用程序提供的实现各种功能的基础框架。应用程序可以选择需要的组件,实现应用程序的功能。在本实施例中,嵌入式操作系统提供的组件包括但不局限于:存储组件、音频组件、网络组件、通信组件、OTA升级组件等等。可选地,应用程序可通过yaml配置进行配置,选择需要的组件。
[0029]随着物联网技术的不断发展,IoT设备上的功能越来越多,使得物联网应用系统变得越来越复杂,依赖的组件越来越丰富,导致物联网软件包也越来越大,进而导致物联网软件包编译时间长,而且程序烧录时间也会增加,影响程序开发效率。另一方面,对于IoT设备进行OTA升级,需要的流量较大,升级时间也会增加,影响OTA升级效率。
[0030]针对上述技术问题,本申请实施例提供一种解决方案,基本思路是:针对分离模式的待编译程序,在待编译程序的编译过程中,可将待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,进而得到待编译程序的镜像文件。待编译程序依赖的分离组件具有独立的镜像文件。这样,可实现待编译程序和其依赖的分离组件的单独编译,得到独立的镜像文件,实现待编译程序与其依赖的分离组件的分离。尤其在对待编译程序进行编译时,将待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,而无需在待编译程序的编译过程中对分离组件进行编译,可降低待编译程序的编译的数据量,有助于提高待编译程序的编译效率。在后续待编译程序升级时,可对待编译程序、待编译程序依赖的组件进行单独升级,而无需升级整个文件包,可实现更细颗粒度的升级。例如,若需要升级的对象为待编译程序依赖的分离组件,可单独升级分离组件;若需要升级的对象为待编译程序的其它模块,可单独升级其它模块,而无需升级分离组件,从而实现更细颗粒度的升级。
[0031]以下结合附图,详细说明本申请各实施例提供的技术方案。
[0032]应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
[0033]图2为本申请实施例提供的程序编译方法的流程示意图。如图2所示,该程序编译方法主要包括:<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序编译方法,其特征在于,包括:获取待编译程序的配置文件;从所述待编译程序的配置文件中,获取所述待编译程序的编译模式信息;在所述待编译程序的编译模式信息为分离模式的情况下,对所述待编译程序进行编译;在所述待编译程序编译过程中,将所述待编译程序依赖的分离组件的标识写入镜像文件的动态信息段,以得到所述待编译程序的镜像文件;其中,所述分离组件具有独立的镜像文件。2.根据权利要求1所述的方法,其特征在于,还包括:在所述待编译程序编译过程中,针对所述待编译程序依赖的目标组件,从所述目标组件的配置文件中,获取所述目标组件的编译模式信息;若所述目标组件的编译模式信息为分离模式,确定所述目标组件为分离组件。3.根据权利要求1所述的方法,其特征在于,还包括:在编译到所述分离组件时,对所述分离组件进行编译,以得到所述分离组件的镜像文件。4.根据权利要求1所述的方法,其特征在于,所述待编译程序的镜像文件为可重定位文件或可执行文件;所述对所述待编译程序进行编译,包括:将所述待编译程序编译为可重定位文件;或者,将所述待编译程序编译为可重定位文件;对所述可重定位文件进行链接,以得到可执行文件的信息段;对所述可执行文件的信息段进行相对地址至绝对地址的重定位,以得到所述待编译程序的可执行文件。5.根据权利要求4所述的方法,其特征在于,所述对所述待编译程序的各信息段进行相对地址至绝对地址的重定位,包括:根据设定的无效段标识,识别所述可重定位文件中的无效段和有效段;根据所述无效段与所述有效段在所述可重定位文件中的相对地址分布情况,对所述有效段进行相对地址至绝对地址的重定位,以使所述有效段的绝对地址连续;删除所述可重定位文件中的无效段。6.根据权利要求4所述的方法,其特征在于,所述将所述待编译程序编译为可重定位文件,包括:使用ffunction

sections和fdata

sections以函数和数据分别为编译单元,对所述待编译程序进行编译,以得到所述可重定位文件;所述对所述可重定位文件进行链接,包括:使用gc

section以函数和数据为链接单元对所述可重定位文件进行链接,以删除所述可重定位文件中的无用函数和无用数据,得到可执行文件的信息段。7.根据权利要求1

6任一项所述的方法,其特征在于,所述待编译程序为嵌入式应用程序或嵌入式操作系统的组件。8.一种程序启动方法,其特征在于,包括:获取待启动程序的镜像文件至内存中;
对所述待启动程序的镜像文件进行解析,以得到所述待启动程序的镜像文件包含的信息段;所述信息段包括动态信息段;从所述动态信息段中,确定所述待启动程序...

【专利技术属性】
技术研发人员:闫小永
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1