CN110955431B - 编译环境的处理方法及装置 - Google Patents

编译环境的处理方法及装置 Download PDF

Info

Publication number
CN110955431B
CN110955431B CN201811137272.0A CN201811137272A CN110955431B CN 110955431 B CN110955431 B CN 110955431B CN 201811137272 A CN201811137272 A CN 201811137272A CN 110955431 B CN110955431 B CN 110955431B
Authority
CN
China
Prior art keywords
compiling
environment
software development
compiler
compiling environment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811137272.0A
Other languages
English (en)
Other versions
CN110955431A (zh
Inventor
赵洪源
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201811137272.0A priority Critical patent/CN110955431B/zh
Publication of CN110955431A publication Critical patent/CN110955431A/zh
Application granted granted Critical
Publication of CN110955431B publication Critical patent/CN110955431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种编译环境的处理方法及装置。该方法包括:接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据镜像文件创建基于容器的编译环境;采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译。通过本申请,解决了相关技术中企业软件开发工作中的编译环境难以统一管理的问题。

Description

编译环境的处理方法及装置
技术领域
本申请涉及软件开发技术领域,具体而言,涉及一种编译环境的处理方法及装置。
背景技术
企业软件开发工作中的编译环境,通常存在以下几种情况:1、利用开发人员本机作为编译环境。问题:开发人员本机性能低,编译时间长,本机编译时不能做其他工作,浪费工作时间;本机不能同时执行多个软件的编译,复杂的系统场景下,串行编译,编译任务整体时间长;多个开发人员本机的编译环境可能不一致,导致编译结果(程序)存在不确定因素;开发人员本机的安全保护措施不够,被入侵的几率高,编译环境有可能被篡改。2、利用服务器实体机作为编译环境。使用集中环境,虽然改进了开发人员本机相关的问题,但仍有以下问题:需要在硬件维护上投入人力物力。多语言、多版本、多编译器需要大量的设备,代价高。设备利用率低,编译时间和空闲时间比例小,资源浪费。3、利用虚拟机作为编译环境。使用虚拟化环境,充分理由计算资源,减少了浪费,但是还有问题:虚拟机仍需要人工管理。虚拟机还是占用了一部分计算资源和存储资源。4、利用容器作为编译环境。使用容器作为编译环境载体,进一步减少了资源浪费,但是仍然有浪费,且人工管理复杂。
针对相关技术中企业软件开发工作中的编译环境难以统一管理的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种编译环境的处理方法及装置,以解决相关技术中企业软件开发工作中的编译环境难以统一管理的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种编译环境的处理方法。该方法包括:接收编译指令,其中,所述编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据所述镜像文件创建基于容器的编译环境;通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译。
进一步地,在基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,所述方法还包括:确定多种软件开发语言和多种编译器版本;生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;将所述多种镜像文件存入所述编译环境仓库中。
进一步地,所述方法还包括:当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,所述新的软件开发语言为不属于所述多种软件开发语言中的软件开发语言,所述新的编译器版本为不属于所述多种编译器版本的编译器版本;将所述目标镜像文件新增入所述编译环境仓库中。
进一步地,在通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译之后,所述方法还包括:在编译结束后,检测是否接收到销毁指令;若接收到所述销毁指令,销毁所述基于容器的编译环境。
进一步地,在通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译之后,所述方法还包括:在编译结束后开始计时,在达到预设时间后,销毁所述基于容器的编译环境。
为了实现上述目的,根据本申请的一个方面,提供了一种编译环境的处理装置,包括:接收单元,用于接收编译指令,其中,所述编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;第一获取单元,用于基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件;创建单元,用于根据所述镜像文件创建基于容器的编译环境;编译单元,用于通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译。
进一步地,所述装置还包括:确定单元,用于在基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,确定多种软件开发语言和多种编译器版本;第二获取单元,用于生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;第一存入单元,用于将所述多种镜像文件存入所述编译环境仓库中。
进一步地,所述装置还包括:生成单元,用于当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,所述新的软件开发语言为不属于所述多种软件开发语言中的软件开发语言,所述新的编译器版本为不属于所述多种编译器版本的编译器版本;第二存入单元,用于将所述目标镜像文件新增入所述编译环境仓库中。
为了实现上述目的,根据本申请的一个方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序执行上述任意一项所述的编译环境的处理方法。
为了实现上述目的,根据本申请的一个方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的编译环境的处理方法。
通过本申请,采用以下步骤:接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据镜像文件创建基于容器的编译环境;采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译,解决了相关技术中企业软件开发工作中的编译环境难以统一管理的问题。通过从编译环境仓库中获取镜像文件,根据镜像文件创建基于容器的编译环境,以在该编译环境下对源程序进行编译,能够对企业软件开发工作中编译环境进行统一管理,达到了有效管理企业多团队、多语言、多版本的高可用、高性能的编译环境和环境管理。减少编译环境的投入成本和维护成本的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的编译环境的处理方法的流程图;
图2是根据本申请实施例提供的编译环境的处理方法的流程图;以及
图3是根据本申请实施例提供的编译环境的处理装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
编译(compile),也即利用编译程序从源语言编写的源程序产生目标程序的过程。也是用编译程序产生目标程序的动作。编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
编译语言是一种以编译器来实现的编程语言。它不像直译语言一样,由解释器将代码逐句的运行,而是以编译器,先将代码编译为机器码,再加以运行。理论上,任何编程语言都可以是编译式,或直译式的。它们之间的区别,仅与程序的应用有关。
根据本申请的实施例,提供了一种编译环境的处理方法。
图1是根据本申请实施例的编译环境的处理方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息。
例如,目标语言是Java。在采用Jave编写好源程序后,为了产生目标程序,研发人员会触发编译指令,以对源程序进行编译。
步骤S102,基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据镜像文件创建基于容器的编译环境。
可选地,在本申请实施例提供的编译环境的处理方法中,在基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,该方法还包括:确定多种软件开发语言和多种编译器版本;生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;将多种镜像文件存入编译环境仓库中。
例如,多种软件开发语言包括:Java、C/C++、Basic、C#,多种编译器版本为:MS VC++10.0_MSC_VER=1600;MS VC++9.0_MSC_VER=1500;MS VC++8.0_MSC_VER=1400;MS VC++7.1_MSC_VER=1310;MS VC++7.0_MSC_VER=1300;MS VC++6.0_MSC_VER=1200;MS VC++5.0_MSC_VER=1100,由于不同的软件开发语言和编译器版本对应的镜像文件不同,因此,在上述方案中,生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;将多种镜像文件存入编译环境仓库中。
随着技术的发展,后续会出现许多新的软件开发语言和编译器版本,在本申请实施例中,为了及时更新编译环境仓库中的镜像文件,在本申请实施例提供的编译环境的处理方法中,该方法还包括:当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,新的软件开发语言为不属于多种软件开发语言中的软件开发语言,新的编译器版本为不属于多种编译器版本的编译器版本;将目标镜像文件新增入编译环境仓库中。
通过上述方案,能够实现及时更新编译环境仓库中的镜像文件,保证编译环境仓库中的镜像文件中的全面性。
步骤S103,采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译。
通过上述步骤,基于容器的编译环境对待编译的由目标语言编写的源程序进行编译,采用容器的方式运行编译环境,可以节省实体机数量,节约大量的硬件成本。采用容器技术及容器集群管理技术,可以提高编译环境的可用性,降低了实体机的维护登记,减少了物理机的维护成本。进一步地,容器比虚拟机更轻更小,更节省资源。本发明引入容器管理技术,可以做到灵活的存、取、部署容器,达到随用随创建。
为了有效减少资源的占用,在本申请实施例提供的编译环境的处理方法中,在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,该方法还包括:在编译结束后,检测是否接收到销毁指令;若接收到销毁指令,销毁基于容器的编译环境。
在上述方案中,在对源程序编译结束之后,若接收到销毁指令,则将之前创建的编译环境进行销毁,以减少占用的资源。
可选地,为了有效减少资源的占用,在本申请实施例提供的编译环境的处理方法中,在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,该方法还包括:在编译结束后开始计时,在达到预设时间后,销毁基于容器的编译环境。
在上述方案中,在对源程序编译结束之后,在达到预设时间(例如5分钟)后,则将之前创建的编译环境进行销毁,以减少占用的资源。
在本申请实施例提供的编译环境的处理方法中,将编译环境从本机放到了公共的编译环境,解放了开发人员本机,统一了编译环境。如图2所示,本申请实施例提供的编译环境的处理方法可以应用于编译环境管理系统,在编译环境管理系统中发送编译指令,基于该编译指令从编译环境仓库中获取镜像文件,在获取到镜像文件之后,在容器管理系统中创建基于容器的编译环境,若是多个编译指令,同时可以创建多个基于容器的编译环境,在基于容器的编译环境中对源程序执行编译,输出编译后的结果。也即,公共的编译环境,可同时提供多个不同语言、不同版本的同时多个编译环境,可以并行编译系统中的多个组件,减少整体编译工作时间,编译环境集中管控,有效提高编译环境的安全性,减少编译环境有意无意的被破坏。
综上所述,本申请实施例提供的编译环境的处理方法,通过接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据镜像文件创建基于容器的编译环境;采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译,解决了相关技术中企业软件开发工作中的编译环境难以统一管理的问题。通过从编译环境仓库中获取镜像文件,根据镜像文件创建基于容器的编译环境,以在该编译环境下对源程序进行编译,能够对企业软件开发工作中编译环境进行统一管理,达到了有效管理企业多团队、多语言、多版本的高可用、高性能的编译环境和环境管理。减少编译环境的投入成本和维护成本的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种编译环境的处理装置,需要说明的是,本申请实施例的编译环境的处理装置可以用于执行本申请实施例所提供的用于编译环境的处理方法。以下对本申请实施例提供的编译环境的处理装置进行介绍。
图3是根据本申请实施例的编译环境的处理装置的示意图。如图3所示,该装置包括:接收单元10、第一获取单元20、创建单元30和编译单元40。
接收单元10,用于接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;
第一获取单元20,用于基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;
创建单元30,用于根据镜像文件创建基于容器的编译环境;
编译单元40,用于采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译。
本申请实施例提供的编译环境的处理装置,通过接收单元10接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;第一获取单元20基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;创建单元30根据镜像文件创建基于容器的编译环境;编译单元40采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译,解决了相关技术中企业软件开发工作中的编译环境难以统一管理的问题。通过从编译环境仓库中获取镜像文件,根据镜像文件创建基于容器的编译环境,以在该编译环境下对源程序进行编译,能够对企业软件开发工作中编译环境进行统一管理,达到了有效管理企业多团队、多语言、多版本的高可用、高性能的编译环境和环境管理。减少编译环境的投入成本和维护成本的效果。
可选地,在本申请实施例提供的编译环境的处理装置中,该装置还包括:确定单元,用于在基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,确定多种软件开发语言和多种编译器版本;第二获取单元,用于生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;第一存入单元,用于将多种镜像文件存入编译环境仓库中。
可选地,在本申请实施例提供的编译环境的处理装置中,该装置还包括:生成单元,用于当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,新的软件开发语言为不属于多种软件开发语言中的软件开发语言,新的编译器版本为不属于多种编译器版本的编译器版本;第二存入单元,用于将目标镜像文件新增入编译环境仓库中。
可选地,在本申请实施例提供的编译环境的处理装置中,该装置还包括:检测单元,用于在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,在编译结束后,检测是否接收到销毁指令;第一执行单元,用于在接收到销毁指令的情况下,销毁基于容器的编译环境。
可选地,在本申请实施例提供的编译环境的处理装置中,该装置还包括:第二执行单元,用于在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,在编译结束后开始计时,在达到预设时间后,销毁基于容器的编译环境。
所述编译环境的处理装置包括处理器和存储器,上述接收单元10、第一获取单元20、创建单元30和编译单元40等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来处理编译环境。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述编译环境的处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述编译环境的处理方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据镜像文件创建基于容器的编译环境;采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译。
可选地,在基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,该方法还包括:确定多种软件开发语言和多种编译器版本;生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;将多种镜像文件存入编译环境仓库中。
可选地,该方法还包括:当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,新的软件开发语言为不属于多种软件开发语言中的软件开发语言,新的编译器版本为不属于多种编译器版本的编译器版本;将目标镜像文件新增入编译环境仓库中。
可选地,在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,该方法还包括:在编译结束后,检测是否接收到销毁指令;若接收到销毁指令,销毁基于容器的编译环境。
可选地,在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,该方法还包括:在编译结束后开始计时,在达到预设时间后,销毁基于容器的编译环境。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收编译指令,其中,编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件;根据镜像文件创建基于容器的编译环境;采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译。
可选地,在基于编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,该方法还包括:确定多种软件开发语言和多种编译器版本;生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;将多种镜像文件存入编译环境仓库中。
可选地,该方法还包括:当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,新的软件开发语言为不属于多种软件开发语言中的软件开发语言,新的编译器版本为不属于多种编译器版本的编译器版本;将目标镜像文件新增入编译环境仓库中。
可选地,在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,该方法还包括:在编译结束后,检测是否接收到销毁指令;若接收到销毁指令,销毁基于容器的编译环境。
可选地,在采用基于容器的编译环境对待编译的由目标语言编写的源程序进行编译之后,该方法还包括:在编译结束后开始计时,在达到预设时间后,销毁基于容器的编译环境。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (6)

1.一种编译环境的处理方法,其特征在于,包括:
接收编译指令,其中,所述编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;
基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件;
根据所述镜像文件创建基于容器的编译环境;
通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译;
在基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,所述方法还包括:确定多种软件开发语言和多种编译器版本;生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;将所述多种镜像文件存入所述编译环境仓库中;
所述方法还包括:当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,所述新的软件开发语言为不属于所述多种软件开发语言中的软件开发语言,所述新的编译器版本为不属于所述多种编译器版本的编译器版本;将所述目标镜像文件新增入所述编译环境仓库中。
2.根据权利要求1所述的方法,其特征在于,在通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译之后,所述方法还包括:
在编译结束后,检测是否接收到销毁指令;
若接收到所述销毁指令,销毁所述基于容器的编译环境。
3.根据权利要求1所述的方法,其特征在于,在通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译之后,所述方法还包括:
在编译结束后开始计时,在达到预设时间后,销毁所述基于容器的编译环境。
4.一种编译环境的处理装置,其特征在于,包括:
接收单元,用于接收编译指令,其中,所述编译指令中携带有待编译的由目标语言编写的源程序的信息和编译器的版本信息;
第一获取单元,用于基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件;
创建单元,用于根据所述镜像文件创建基于容器的编译环境;
编译单元,用于通过所述基于容器的编译环境对所述待编译的由目标语言编写的源程序进行编译;
其中,所述装置还包括:确定单元,用于在基于所述编译指令携带的信息从编译环境仓库中获取对应的镜像文件之前,确定多种软件开发语言和多种编译器版本;第二获取单元,用于生成每种软件开发语言和每种编译器版本对应的镜像文件,得到多种镜像文件;第一存入单元,用于将所述多种镜像文件存入所述编译环境仓库中;
所述装置还包括:生成单元,用于当检测到出现新的软件开发语言和/或新的编译器版本时,基于新的软件开发语言和/或新的编译器版本生成目标镜像文件,其中,所述新的软件开发语言为不属于所述多种软件开发语言中的软件开发语言,所述新的编译器版本为不属于所述多种编译器版本的编译器版本;第二存入单元,用于将所述目标镜像文件新增入所述编译环境仓库中。
5.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行权利要求1至3中任意一项所述的编译环境的处理方法。
6.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至3中任意一项所述的编译环境的处理方法。
CN201811137272.0A 2018-09-27 2018-09-27 编译环境的处理方法及装置 Active CN110955431B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811137272.0A CN110955431B (zh) 2018-09-27 2018-09-27 编译环境的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811137272.0A CN110955431B (zh) 2018-09-27 2018-09-27 编译环境的处理方法及装置

Publications (2)

Publication Number Publication Date
CN110955431A CN110955431A (zh) 2020-04-03
CN110955431B true CN110955431B (zh) 2024-02-13

Family

ID=69975332

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811137272.0A Active CN110955431B (zh) 2018-09-27 2018-09-27 编译环境的处理方法及装置

Country Status (1)

Country Link
CN (1) CN110955431B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111610977B (zh) * 2020-05-19 2024-06-25 腾讯科技(深圳)有限公司 一种编译方法和相关装置
CN111880802A (zh) * 2020-07-03 2020-11-03 深圳市欢太科技有限公司 一种编译方法、电子设备及计算机可读存储介质
CN112015427A (zh) * 2020-08-21 2020-12-01 广州欢网科技有限责任公司 多种编译环境的搭建方法、装置及电子设备
CN112363733A (zh) * 2020-10-20 2021-02-12 深圳力维智联技术有限公司 一种基于Docker容器的持续集成方法
CN112256278A (zh) * 2020-11-09 2021-01-22 Oppo广东移动通信有限公司 编译方法、装置、设备及存储介质
CN113434146A (zh) * 2021-06-22 2021-09-24 青岛海尔科技有限公司 代码的编译方法、装置、存储介质及电子装置
CN113835683A (zh) * 2021-09-17 2021-12-24 博锐尚格科技股份有限公司 一种目标程序的镜像制作方法和装置
CN114168151A (zh) * 2021-12-10 2022-03-11 北京鲸鲮信息系统技术有限公司 基于容器的程序编译方法、装置、电子设备及存储介质
CN115167874B (zh) * 2022-08-19 2023-04-14 禾多科技(北京)有限公司 自动驾驶软件镜像部署方法、装置、电子设备和可读介质
CN115469878B (zh) * 2022-09-13 2023-11-24 上海掌御信息科技有限公司 一种Android代码多样性编译方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095523A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现安卓编译隔离的方法和系统
CN106227579A (zh) * 2016-07-12 2016-12-14 深圳市中润四方信息技术有限公司 一种Docker容器构建方法及Docker管理控制台

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833467B (zh) * 2010-05-14 2013-12-04 华为终端有限公司 一种在Android的菜单中添加菜单项的方法及设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095523A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现安卓编译隔离的方法和系统
CN106227579A (zh) * 2016-07-12 2016-12-14 深圳市中润四方信息技术有限公司 一种Docker容器构建方法及Docker管理控制台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
(美)马迪亚斯等.Docker即学即用.中国电力出版社,2015,第81-85页. *

Also Published As

Publication number Publication date
CN110955431A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
CN110955431B (zh) 编译环境的处理方法及装置
US9811360B2 (en) Dynamic determination of application server runtime classloading
CN110187914B (zh) 应用开发方法、系统及装置
CN111090433B (zh) 一种数据处理的方法、装置和存储介质
US11474797B2 (en) Generating closures from abstract representation of source code
CN105446712B (zh) 一种应用程序缺陷修补方法及装置
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
US9558023B2 (en) Live application mobility from one operating system level to an updated operating system level and applying overlay files to the updated operating system
US10614227B2 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
US9459986B2 (en) Automatic generation of analysis-equivalent application constructs
WO2021092502A1 (en) Just-in-time containers
US11294791B2 (en) Code optimization for connected managed runtime environments
US11157249B1 (en) Method and system for identifying and extracting independent services from a computer program
US11989539B2 (en) Continuous integration and deployment system time-based management
US9841982B2 (en) Locating import class files at alternate locations than specified in classpath information
CN113220326A (zh) 智能合约升级方法及区块链系统
CN110968333B (zh) 配置信息替换方法和装置、机器可读存储介质及处理器
WO2020020264A1 (en) Resource Optimization and Reuse in Resource Constrained Environment
US11720348B2 (en) Computing node allocation based on build process specifications in continuous integration environments
CN114791884A (zh) 测试环境的构建方法、装置、存储介质及电子设备
CN113467893B (zh) 虚拟机自动化测试方法、装置、存储介质及处理器
CN118056183A (zh) 优化即时编译过程
CN115048083A (zh) 组件的可视化方法、装置、存储介质及电子设备
CN107632934B (zh) 一种C-sharp中函数复制方法及装置
CN111722866B (zh) 一种OpenStack代码修复方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant