CN106406971A - 一种代码文件的编译方法及装置 - Google Patents
一种代码文件的编译方法及装置 Download PDFInfo
- Publication number
- CN106406971A CN106406971A CN201610850394.9A CN201610850394A CN106406971A CN 106406971 A CN106406971 A CN 106406971A CN 201610850394 A CN201610850394 A CN 201610850394A CN 106406971 A CN106406971 A CN 106406971A
- Authority
- CN
- China
- Prior art keywords
- mark
- code file
- compressed package
- compilation script
- compiling
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种代码文件的编译方法及装置,应用在第一编译服务器中,所述方法包括:从已获取到的压缩包中解析出所述压缩包中携带的第一标识;根据所述第一标识从第一代码库服务器中下载所述第一标识对应的代码文件;基于所述第一标识与预设的编译脚本列表确定所述第一标识对应的编译脚本;通过所述编译脚本对所述压缩包和所述代码文件进行编译从而获得编译结果。应用本发明实施例,当需要编译的不同功能需求的代码文件数量较多时,可以提高编译结果的准确性,减小编译误差。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种代码文件的编译方法及装置。
背景技术
在当前软件行业中,为了向客户提供统一、稳定的软件产品,管理人员建立了编译服务器对不同功能需求的代码文件进行编译,并将编译结果上传至版本库服务器,以使客户端根据自身需求从版本库服务器中下载自身所需的软件版本。
现有技术方案中,管理人员针对不同的功能需求建立对应的代码文件,由于编译服务器对不同的代码文件进行编译时需要找到与不同的代码文件对应的压缩包,因此当需要编译的代码文件数量较多时,编译结果容易出现错误,误差较大。
发明内容
有鉴于此,本发明提供一种代码文件的编译方法及装置,以解决现有技术中编译结果的误差较大的问题。
为实现上述目的,本发明提供技术方案如下:
根据本发明的第一方面,提出了一种代码文件的编译方法,应用在第一编译服务器中,所述方法包括:
从已获取到的压缩包中解析出所述压缩包中携带的第一标识;
根据所述第一标识从第一代码库服务器中下载所述第一标识对应的代码文件;
基于所述第一标识与预设的编译脚本列表确定所述第一标识对应的编译脚本;
通过所述编译脚本对所述压缩包和所述代码文件进行编译从而获得编译结果。
根据本发明的第二方面,提出了一种代码文件的编译装置,包括:
第一标识解析模块,用于从已获取到的压缩包中解析出所述压缩包中携带的第一标识;
代码文件下载模块,用于根据所述第一标识解析模块中解析出的所述第一标识从第一代码库服务器中下载所述第一标识对应的代码文件;
编译脚本确定模块,用于基于所述第一标识解析模块中解析出的所述第一标识与预设的编译脚本列表确定所述第一标识对应的编译脚本;
代码文件编译模块,用于通过所述编译脚本确定模块中确定的所述编译脚本对所述压缩包和所述代码文件进行编译从而获得编译结果。
由以上技术方案可见,第一编译服务器从压缩包中解析出压缩包中携带的第一标识,并根据第一标识从第一代码库服务器中下载第一标识对应的代码文件,第一编译服务器基于第一标识与预设的编译脚本列表确定第一标识对应的编译脚本,从而通过该编译脚本对压缩包和代码文件进行编译,当需要编译的不同功能需求的代码文件数量较多时,提高了编译结果的准确性,减小编译误差。
附图说明
图1是应用本发明实施例代码文件的编译的一个应用场景示意图;
图2是本发明提供的一个代码文件的编译方法的实施例流程图;
图3是本发明提供的另一个代码文件的编译方法的实施例流程图;
图4是本发明提供的再一个代码文件的编译方法的实施例流程图;
图5是本发明提供的一种第一编译服务器的硬件结构图;
图6是本发明提供的一个代码文件的编译装置的实施例框图;
图7是本发明提供的另一个代码文件的编译装置的实施例框图;
图8是本发明提供的再一个代码文件的编译装置的实施例框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是应用本发明实施例代码文件的编译的一个应用场景示意图,如图1所示,代码文件的编译系统包括:第一代码库服务器11、第二代码库服务器12、第一编译服务器13、第二编译服务器14、版本库服务器15、路由器16等设备,其中,版本库服务器15和路由器16通过互联网17建立网络连接。本领域技术人员可以理解的是,代码库服务器包括第一代码库服务器11、第二代码库服务器12;编译服务器包括第一编译服务器13、第二编译服务器14;路由器16是待升级设备,仅为示例性说明,其并不能形成对本发明的限制,第一代码库服务器11和第二代码库服务器12也可以为同一台代码库服务器;第一编译服务器13和第二编译服务器14也可以为同一台编译服务器;待升级设备为需要进行软件版本升级的设备,待升级设备还可以为防火墙、交换机等网络设备。
其中,第一代码库服务器11用于存储代码文件,代码文件是非开源的,由管理人员进行编写及修改;第二代码库服务器12用于存储内核源码文件,内核源码文件是开源的,除管理人员以外的用户也可以对其进行访问及修改;第二编译服务器14用于接收第二代码库服务器12中存储的内核源码文件,并根据内核源码文件生成压缩包,第一编译服务器13对代码文件进行的编译是在具备该压缩包的基础上实施的;第一编译服务器13用于从已获取到的压缩包中解析出压缩包中携带的第一标识,第一编译服务器13根据第一标识在第一代码库服务器11中获取第一标识对应的代码文件,通常管理人员基于不同的功能需求建立与不同的功能需求相对应的代码文件,例如,管理人员基于联通、电信、移动等不同的运营商建立与不同的运营商相对应的代码文件,第一标识则是用于区别不同功能需求的代码文件的数字、符号或两者的组合。第一编译服务器13对压缩包和代码文件进行编译从而获得编译结果,编译结果包括至少一个软件版本,至少一个软件版本为针对待升级设备的不同类型建立的,待升级设备的类型例如为路由器、防火墙、交换机等。版本库服务器15用于记录第一编译服务器13上传的编译结果。路由器16可以通过互联网17从版本库服务器15中获取自身需要的软件版本。本发明实施例,当需要编译的不同功能需求的代码文件数量较多时,可以提高编译结果的准确性,减小编译误差。
为对本发明进行进一步说明,提供下列实施例:
图2是本发明提供的一个代码文件的编译方法的实施例流程图,本发明实施例结合图1进行示例性说明,如图2所示,包括步骤如下:
步骤201:从已获取到的压缩包中解析出压缩包中携带的第一标识。
步骤202:根据第一标识从第一代码库服务器中下载第一标识对应的代码文件。
步骤203:基于第一标识与预设的编译脚本列表确定第一标识对应的编译脚本。
步骤204:通过编译脚本对压缩包和代码文件进行编译从而获得编译结果。
在步骤201中,在一实施例中,压缩包是基于内核源码文件生成的,第一编译服务器13对代码文件进行编译是在具备该压缩包的基础上实施的,压缩包例如为ABC.tar.gz。压缩包的获取方式可以为:第一编译服务器13接收第二代码库服务器12发送的内核源码文件,第一编译服务器13基于内核源码文件生成压缩包;也可以为第二编译服务器14接收第二代码库服务器12发送的内核源码文件,第二编译服务器14基于内核源码文件生成压缩包,第一编译服务器13从第二编译服务器14中获取该压缩包。第一编译服务器13从已获取到的压缩包中解析出压缩包中携带的第一标识,其中,第一标识是用于区别不同功能需求的代码文件的数字、符号或两者的组合,第一标识例如为压缩包的名称ABC。
在步骤202中,在一实施例中,代码文件为管理人员针对不同的功能需求建立的。例如,管理人员针对联通、电信、移动等不同的运营商建立与不同的运营商对应的代码文件。代码文件可以为记录了代码的可执行“.c”文件,例如,“ABC.c”。第一代码库服务器11用于存储代码文件,第二代码库服务器12用于存储内核源码文件,第一代码库服务器11和第二代码库服务器12也可以为同一台代码库服务器,该代码库服务器用于存储代码文件和内核源码文件。结合步骤201,例如,第一编译服务器13根据第一标识ABC从第一代码库服务器11中下载第一标识ABC对应的“ABC.c”。
在步骤203中,在一实施例中,第一编译服务器13预先建立了编译脚本列表,编译脚本列表包括至少一条编译脚本表项,编译脚本表项记录了第四标识与第四标识对应的编译脚本的存放路径。第一编译服务器13将第一标识与编译脚本列表中的各条编译脚本表项中记录的第四标识逐一进行匹配;当将第一标识与编译脚本列表中的一条编译脚本表项中记录的标识匹配成功时,第一编译服务器13将该条编译脚本表项中记录的标识确定为第五标识,第一编译服务器13获取第五标识对应的编译脚本的存放路径;第一编译服务器13通过该存放路径确定第一标识对应的编译脚本。
如下表1所示,为编译脚本列表的示例:
表1
标识 | 编译脚本的存放路径 |
ABC | dpxfw_bmj |
BCD | dpxfw_fw_gcrz |
CDE | dpxfw_cgn_fw |
表1中的ABC、BCD、CDE均为第四标识,第四标识ABC、第四标识BCD、第四标识CDE分别对应的编译脚本的存放路径为dpxfw_bmj、dpxfw_fw_gcrz、dpxfw_cgn_fw。例如,第一编译服务器13将已获取到的ABC.tar.gz中携带的第一标识ABC与表1所示的编译脚本列表中的各条编译脚本表项中记录的第四标识ABC、第四标识BCD、第四标识CDE逐一进行匹配;第一标识ABC与表1所示的编译脚本列表中的第一条编译脚本表项中记录的ABC匹配成功,第一编译服务器13将该条编译脚本表项中记录的ABC确定为第五标识,第一编译服务器13获取到第五标识ABC对应的编译脚本的存放路径为dpxfw_bmj,第一编译服务器13通过dpxfw_bmj确定第一标识ABC对应的编译脚本。
在步骤204中,在一实施例中,第一编译服务器13通过编译脚本对压缩包和代码文件进行编译从而获得编译结果。编译结果包括至少一个软件版本,至少一个软件版本为针对待升级设备的不同类型建立的,待升级设备为需要进行软件版本升级的设备,待升级设备的类型例如为路由器、防火墙、交换机等。本领域技术人员可以理解的是,此处对压缩包和代码文件的编译过程为现有技术,故不作详述。
通过本发明实施例,第一编译服务器从压缩包中解析出压缩包中携带的第一标识,并根据第一标识从第一代码库服务器中下载第一标识对应的代码文件,第一编译服务器基于第一标识与预设的编译脚本列表确定第一标识对应的编译脚本,从而通过该编译脚本对压缩包和代码文件进行编译,当需要编译的不同功能需求的代码文件数量较多时,提高了编译结果的准确性,减小编译误差。
为对本发明进行进一步说明,提供下列实施例:
图3是本发明提供的另一个代码文件的编译方法的实施例流程图,本发明实施例结合图1、图2进行示例性说明,如图3所示,包括步骤如下:
步骤301:第二编译服务器接收第二代码库服务器发送的内核源码文件。
步骤302:第二编译服务器基于接收到的内核源码文件生成压缩包。
步骤303:第一编译服务器接收第二编译服务器发送的压缩包。
步骤304:第一编译服务器从已获取到的压缩包中解析出压缩包中携带的第一标识。
步骤305:第一编译服务器根据第一标识从第一代码库服务器中下载第一标识对应的代码文件。
步骤306:第一编译服务器将第一标识与预设的编译脚本列表中的各条编译脚本表项中记录的第四标识逐一进行匹配,各条编译脚本表项中还记录了编译脚本的存放路径。
步骤307:当第一标识与编译脚本列表中的一条编译脚本表项中记录的标识匹配成功时,将该条编译脚本表项中记录的标识确定为第五标识,第一编译服务器获取第五标识对应的编译脚本的存放路径,通过该存放路径确定第一标识对应的编译脚本。
步骤308:第一编译服务器通过编译脚本对压缩包和代码文件进行编译从而获得编译结果。
步骤309:第一编译服务器将编译结果上传到版本库服务器。
在步骤301中,第二编译服务器14接收第二代码库服务器12发送的内核源码文件。通常内核源码文件是开源的,除管理人员以外的用户也可以对其进行访问及修改;代码文件是非开源的,由管理人员进行编写及修改。本发明实施例中由于非开源的代码文件和开源的内核源码文件分别由第一代码库服务器11和第二代码库服务器12进行存储,便于管理人员对代码文件及内核源码文件进行统一管理;此外,通过对第一代码库服务器11中存储的代码文件与第二代码库服务器12中存储的内核源码文件进行隔离,有效防止了除管理人员以外的用户对代码文件进行访问及修改,提高了代码文件的安全性。
在步骤302中,第二编译服务器14基于接收到的内核源码文件生成压缩包,压缩包例如为ABC.tar.gz。第一编译服务器13对代码文件进行的编译是在具备该压缩包的基础上实施的。本领域技术人员可以理解的是,此处基于内核源码文件生成压缩包的过程为现有技术,故不作详述。若第一编译服务器13和第二编译服务器14为同一台编译服务器,则该编译服务器需要将内核源码文件生成压缩包,并对该压缩包和代码文件进行编译。本发明实施中,第一编译服务器13和第二编译服务器14分别对代码文件和内核源码文件进行相应处理,降低了第一编译服务器13和第二编译服务器14的编译压力,节省了编译时间。
在步骤303中,第一编译服务器13接收第二编译服务器14发送的ABC.tar.gz。
在步骤304中,第一编译服务器13从已获取到的压缩包中解析出压缩包中携带的第一标识。例如,第一编译服务器13从已获取到的ABC.tar.gz中解析出ABC.tar.gz中携带的第一标识ABC。
在步骤305中,第一编译服务器13根据第一标识从第一代码库服务器11中下载第一标识对应的代码文件。例如,第一编译服务器13根据第一标识ABC从第一代码库服务器11中下载第一标识ABC对应的“ABC.c”。
在步骤306中,第一编译服务器13将第一标识与预设的编译脚本列表中的各条编译脚本表项中记录的第四标识逐一进行匹配,各条编译脚本表项中还记录了编译脚本的存放路径。如表1所示,例如,第一编译服务器13将第一标识ABC与表1所示的编译脚本列表中的各条编译脚本表项中记录的第四标识ABC、第四标识BCD、第四标识CDE逐一进行匹配;第四标识ABC、第四标识BCD、第四标识CDE分别对应的编译脚本的存放路径为dpxfw_bmj、dpxfw_fw_gcrz、dpxfw_cgn_fw。
在步骤307中,当第一标识与编译脚本列表中的一条编译脚本表项中记录的标识匹配成功时,第一编译服务器13将该条编译脚本表项中记录的标识确定为第五标识,第一编译服务器13获取第五标识对应的编译脚本的存放路径,从而通过该存放路径确定第一标识对应的编译脚本。结合步骤306,例如,第一编译服务器13将第一标识ABC与表1所示的编译脚本列表中的第一条编译脚本表项中记录的ABC匹配成功,第一编译服务器13将该条编译脚本表项中记录的ABC确定为第五标识,第一编译服务器13获取到表1中的第五标识ABC对应的编译脚本的存放路径为dpxfw_bmj,从而通过dpxfw_bmj确定了第一标识ABC对应的编译脚本。
在步骤308中,第一编译服务器13通过编译脚本对压缩包和代码文件进行编译从而获得编译结果。编译结果包括至少一个软件版本,至少一个软件版本为针对待升级设备的不同类型建立的,待升级设备为需要进行软件版本升级的设备,待升级设备的类型例如为路由器、防火墙、交换机等。本领域技术人员可以理解的是,此处压缩包和代码文件的编译过程为现有技术,故不作详述。
在步骤309中,第一编译服务器13将编译结果上传到版本库服务器15。路由器16可以通过互联网17从版本库服务器15中获取自身需要的软件版本。
通过本发明实施例,第一编译服务器13将第一标识与预设的编译脚本列表中的各条编译脚本表项中记录的第四标识逐一进行匹配,将匹配成功的一条编译脚本表项中记录的标识确定为第五标识,第一编译服务器13获取第五标识对应的编译脚本的存放路径,从而通过该存放路径确定第一标识对应的编译脚本。当标识对应的编译脚本的存放路径发生变更时,管理人员可以通过预设的编译脚本列表对编译脚本的存放路径进行修改,便于统一管理。
图4是本发明提供的再一个代码文件的编译方法的实施例流程图,本发明实施例结合图1、图2、图3进行示例性说明,如图4所示,包括步骤如下:
步骤401:第一编译服务器接收第二代码库服务器发送的内核源码文件。
步骤402:第一编译服务器基于内核源码文件生成压缩包。
步骤403:第一编译服务器从已获取到的压缩包中解析出压缩包中携带的第一标识。
步骤404:第一编译服务器将第一标识与预设的版本记录表中的各条版本记录表项中记录的第二标识逐一进行匹配,各条版本记录表项中还包括更新日期、强制执行信息、当前版本号。
步骤405:当第一标识与版本记录表中的各条版本记录表项中记录的第二标识均未匹配成功时,第一编译服务器基于第一标识以及压缩包中携带的更新日期、强制执行信息、当前版本号生成第一标识对应的版本记录表项并记录在版本记录表中。
可选的,当第一标识与版本记录表中的一条版本记录表项中记录的标识匹配成功时,第一编译服务器将该条版本记录表项中记录的标识确定为第三标识,第一编译服务器基于压缩包中携带的更新日期、强制执行信息确定第一标识对应的版本号,第一编译服务器将该版本记录表项中第三标识对应的当前版本号替换为该版本号。图4中未示出。
步骤406:第一编译服务器根据第一标识从第一代码库服务器中下载第一标识对应的代码文件。
步骤407:第一编译服务器基于第一标识与预设的编译脚本列表确定第一标识对应的编译脚本。
步骤408:第一编译服务器通过编译脚本对压缩包和代码文件进行编译从而获得编译结果。
步骤409:第一编译服务器将编译结果上传到版本库服务器。
在步骤401中,第一编译服务器13接收第二代码库服务器12发送的内核源码文件。
在步骤402中,第一编译服务器13基于内核源码文件生成压缩包。此处基于内核源码文件生成压缩包的过程为现有技术,故不作详述。
在步骤403中,第一编译服务器13从已获取到的压缩包中解析出压缩包中携带的第一标识。例如,第一编译服务器13从已获取到的ABC.tar.gz中解析出ABC.tar.gz中携带的第一标识ABC。
在步骤404中,第一编译服务器13将第一标识与预设的版本记录表中的各条版本记录表项中记录的第二标识逐一进行匹配,各条版本记录表项中还包括更新日期、强制执行信息、当前版本号。
如下表2所示,为版本记录表的示例:
表2
标识 | 更新日期 | 强制执行信息 | 当前版本号 |
ABC | 2016/9/12/AM | 1 | P01.1 |
BCD | 2016/9/13/PM | 1 | P02.1 |
CDE | 2016/9/16/AM | 0 | P03.1 |
表2中,更新日期与当前时间通过比较是否为同一上午或同一下午从而确定是否对版本号进行更新,当更新日期与当前时间通过比较为同一上午或同一下午时,第一编译服务器13不对标识对应的当前版本号进行更新;当更新日期与当前时间通过比较不为同一上午或同一下午时,第一编译服务器13对标识对应的当前版本号进行更新,并确定第一标识对应的版本号,第一标识对应的版本号可以通过第一编译服务器13对当前版本号进行累加后得到。例如,表2中第一标识ABC对应的更新时间为2016/9/12/AM,若当前时间为2016/9/12/上午10:00,与表2中记录的2016/9/12/AM同为上午,第一编译服务器13不对P01.1进行更新;若当前时间为2016/9/12/下午4:00,与表2中记录的2016/9/12/AM不一致,第一编译服务器13通过对P01.1进行累加后得到P01.2。
表2中的强制执行信息用于强制执行更新,当强制执行信息中标记为“1”时,无论基于更新日期和当前时间确定是否对版本号进行更新,第一编译服务器13均对版本号强制执行更新;当强制执行信息中标记为“0”时,则第一编译服务器13对版本号不强制执行更新。例如,若第一标识ABC的当前时间为2016/9/12/上午10:00,虽与表2中记录的2016/9/12/AM同为上午,表示不需要对第一标识ABC进行版本号更新,但强制执行信息中标记为“1”,则第一编译服务器13将P01.1强制更新为P01.2。管理人员通过获取版本记录表可以掌握代码文件编译的版本信息,便于统一管理。
在步骤405中,当第一标识与版本记录表中的各条版本记录表项中记录的第二标识均未匹配成功时,第一编译服务器13基于压缩包中携带的第一标识以及压缩包中携带的更新日期、强制执行信息、当前版本号确定第一标识对应的版本记录表项并记录在版本记录表中。例如,若第一标识为DEF,当第一标识DEF与表2中的各条版本记录表项中记录的第二标识ABC、第二标识BCD、第二标识CDE均未匹配成功时,第一编译服务器13根据DEF.tar.gz中携带的DEF、2016/9/17/PM、0、P04.1生成DEF对应的版本记录表项并将该表项记录在版本记录表中,如表3所示:
表3
标识 | 更新日期 | 强制执行信息 | 当前版本号 |
ABC | 2016/9/12/AM | 1 | P01.1 |
BCD | 2016/9/13/PM | 1 | P02.1 |
CDE | 2016/9/16/AM | 0 | P03.1 |
DEF | 2016/9/17/PM | 0 | P04.1 |
可选的,当第一标识与版本记录表中的一条版本记录表项中记录的标识匹配成功时,第一编译服务器13将该条版本记录表项中记录的标识确定为第三标识,第一编译服务器13基于压缩包中携带的更新日期、强制执行信息确定第一标识对应的版本号,第一编译服务器13将该版本记录表项中第三标识对应的当前版本号替换为该版本号。例如,当第一标识ABC与表2中的第一条版本记录表项中记录的ABC匹配成功时,第一编译服务器13将该条版本记录表项中记录的ABC确定为第三标识,若当前时间为2016/9/12/下午10:00,与表2中记录的2016/9/12/AM不一致,第一编译服务器13通过对P01.1进行累加得到P01.2。第一编译服务器13将该条版本记录表项中第三标识ABC的当前版本号P01.1替换为P01.2,如表4所示:
表4
标识 | 更新日期 | 强制执行信息 | 当前版本号 |
ABC | 2016/9/12/AM | 1 | P01.2 |
BCD | 2016/9/13/PM | 1 | P02.1 |
CDE | 2016/9/16/AM | 0 | P03.1 |
在步骤406中,第一编译服务器13根据第一标识从第一代码库服务器11中下载第一标识对应的代码文件。例如,第一编译服务器13根据第一标识ABC从第一代码库服务器11中下载第一标识ABC对应的“ABC.c”。
步骤407的描述可以参见图3所示步骤306-步骤307的相关描述,在此不再详述。
在步骤408中,第一编译服务器13通过编译脚本对压缩包和代码文件进行编译从而获得编译结果。编译结果包括至少一个软件版本,至少一个软件版本为针对待升级设备的不同类型建立的,待升级设备为需要进行软件版本升级的设备,待升级设备的类型例如为路由器、防火墙、交换机等。代码文件中通过类型标识对待升级设备的类型进行区分,类型标识可以为数字、符号或两者的组合。例如,代码文件中通过RT、FW、SW,分别对路由器设备、防火墙设备、交换机设备进行区分。本领域技术人员可以理解的是,编译脚本通过类型标识针对不同的待升级设备的类型生成对应的软件版本为现有技术,故不作详述。
在步骤409中,第一编译服务器13将编译结果上传到版本库服务器15。路由器16可以通过互联网17从版本库服务器15中获取自身需要的软件版本。
本发明实施例中,第一编译服务器13根据第一标识与预设的版本记录表中的各条版本记录表项中记录的第二标识逐一进行匹配,基于压缩包中携带的第一标识、更新日期、强制执行信息、当前版本号确定第一标识对应的版本号,缩短了版本号更新的时间,提高了版本号更新的准确性。
在图3、4所示实施例的基础上,可选的,当第一编译服务器13通过编译脚本对压缩包和代码文件进行编译时,若编译出现异常,第一编译服务器13从代码文件中提取第一标识以及类型标识,第一编译服务器13基于第一标识以及类型标识生成编译信息表项,并记录在预设的编译信息表中。
如表5所示,为编译信息表的示例:
表5
标识 | 类型标识 |
ABC | RT、SW |
BCD | FW |
表5中,例如,第一标识ABC对应的类型标识为RT和SW,即第一标识ABC对应的代码文件在编译过程中针对路由器设备和交换机设备的编译出现错误。
本发明实施例中,当第一编译服务器13通过编译脚本对压缩包和代码文件进行编译出现异常时,第一编译服务器13通过建立的编译信息表对异常信息进行记录,便于管理人员掌握编译情况并对编译异常情况及时进行处理,缩短了管理人员对编译出现异常时进行处理的时间。
对应于上述代码文件的编译方法,本发明还提出了图5所示的第一编译服务器的硬件结构图。请参考图5,在硬件层面,该第一编译服务器包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成代码文件的编译装置。当然,除了软件实现方式之外,本发明并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图6是本发明提供的一个代码文件的编译的装置的实施例框图,如图6所示,该代码文件的编译装置可以包括:第一标识解析模块61、代码文件下载模块62、编译脚本确定模块63、代码文件编译模块64,其中:
第一标识解析模块61,用于从已获取到的压缩包中解析出压缩包中携带的第一标识;
代码文件下载模块62,用于根据第一标识解析模块61中解析出的第一标识从第一代码库服务器中下载第一标识对应的代码文件;
编译脚本确定模块63,用于基于第一标识解析模块61中解析出的第一标识与预设的编译脚本列表确定第一标识对应的编译脚本;
代码文件编译模块64,用于通过编译脚本确定模块63中确定的编译脚本对压缩包和代码文件进行编译从而获得编译结果。
图7是本发明提供的另一个代码文件的编译的装置的实施例框图,如图7所示,在上述图6所示实施例的基础上,代码文件的编译装置还包括:
内核源码文件接收模块65,用于接收第二代码库服务器发送的内核源码文件;
压缩包生成模块66,用于基于内核源码文件接收模块65中的内核源码文件生成压缩包。
在一实施例中,代码文件的编译装置还包括:
压缩包接收模块67,用于接收第二编译服务器发送的压缩包,压缩包为第二编译服务器根据第二代码库服务器中的内核源码文件生成的。
图8是本发明提供的再一个代码文件的编译装置的实施例框图,如图8所示,在上述图7所示实施例的基础上,编译脚本确定模块63包括:
编译脚本表匹配单元631,用于将第一标识解析模块61中解析出的第一标识与编译脚本列表中的各条编译脚本表项中记录的第四标识逐一进行匹配,各条编译脚本表项中还记录了编译脚本的存放路径;
编译脚本确定单元632,用于当编译脚本表匹配单元631中第一标识与编译脚本列表中的一条编译脚本表项中记录的标识匹配成功时,将一条编译脚本表项中记录的标识确定为第五标识,获取第五标识对应的编译脚本的存放路径,通过存放路径确定第一标识对应的编译脚本。
在一实施例中,代码文件的编译装置还包括:
版本记录表匹配模块68,将第一标识解析模块61中解析出的第一标识与预设的版本记录表中的各条版本记录表项中记录的第二标识逐一进行匹配,各条版本记录表项中还包括更新日期、强制执行信息、当前版本号;
版本记录表项生成模块69,用于当版本记录表匹配模块68中第一标识与版本记录表中的各条版本记录表项中记录的第二标识均未匹配成功时,基于第一标识以及压缩包中携带的更新日期、强制执行信息、当前版本号生成第一标识对应的版本记录表项并记录在版本记录表中。
在一实施例中,代码文件的编译装置还包括:
版本号确定模块70,用于当版本记录表匹配模块68中第一标识与版本记录表中的一条版本记录表项中记录的标识匹配成功时,将一条版本记录表项中记录的标识确定为第三标识,基于压缩包中携带的更新日期、强制执行信息确定第一标识对应的版本号;
版本号替换模块71,用于将版本号确定模块70中的一条版本记录表项中第三标识对应的当前版本号替换为版本号。
在一实施例中,代码文件的编译装置还包括:
异常信息提取模块72,用于当代码文件编译模块64中通过编译脚本对压缩包和代码文件进行编译时,若编译出现异常,从代码文件中提取第一标识以及类型标识,类型标识用于区分不同类型的待升级设备;
编译信息记录模块73,用于基于异常信息提取模块72中提取的第一标识以及类型标识生成编译信息表项,并记录在预设的编译信息表中。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,第一编译服务器从压缩包中解析出压缩包中携带的第一标识,并根据第一标识从第一代码库服务器中下载第一标识对应的代码文件,第一编译服务器基于第一标识与预设的编译脚本列表确定第一标识对应的编译脚本,从而通过该编译脚本对压缩包和代码文件进行编译,当需要编译的不同功能需求的代码文件数量较多时,提高了编译结果的准确性,减小编译误差。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种代码文件的编译方法,应用在第一编译服务器中,其特征在于,所述方法包括:
从已获取到的压缩包中解析出所述压缩包中携带的第一标识;
根据所述第一标识从第一代码库服务器中下载所述第一标识对应的代码文件;
基于所述第一标识与预设的编译脚本列表确定所述第一标识对应的编译脚本;
通过所述编译脚本对所述压缩包和所述代码文件进行编译从而获得编译结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第二代码库服务器发送的内核源码文件;
基于所述内核源码文件生成所述压缩包。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第二编译服务器发送的所述压缩包,所述压缩包为所述第二编译服务器根据所述第二代码库服务器中的所述内核源码文件生成的。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一标识与预设的版本记录表中的各条版本记录表项中记录的第二标识逐一进行匹配,所述各条版本记录表项中还包括更新日期、强制执行信息、当前版本号;
当所述第一标识与所述版本记录表中的各条版本记录表项中记录的第二标识均未匹配成功时,基于所述第一标识以及所述压缩包中携带的更新日期、强制执行信息、当前版本号生成所述第一标识对应的版本记录表项并记录在所述版本记录表中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述第一标识与所述版本记录表中的一条版本记录表项中记录的标识匹配成功时,将所述一条版本记录表项中记录的标识确定为第三标识,基于所述压缩包中携带的更新日期、强制执行信息确定所述第一标识对应的版本号;
将所述一条版本记录表项中所述第三标识对应的当前版本号替换为所述版本号。
6.根据权利要求1所述的方法,其特征在于,所述基于所述第一标识与预设的编译脚本列表确定所述第一标识对应的编译脚本,包括:
将所述第一标识与所述编译脚本列表中的各条编译脚本表项中记录的第四标识逐一进行匹配,所述各条编译脚本表项中还记录了编译脚本的存放路径;
当所述第一标识与所述编译脚本列表中的一条编译脚本表项中记录的标识匹配成功时,将所述一条编译脚本表项中记录的标识确定为第五标识,获取所述第五标识对应的编译脚本的存放路径,通过所述存放路径确定所述第一标识对应的编译脚本。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述通过所述编译脚本对所述压缩包和所述代码文件进行编译时,若编译出现异常,从所述代码文件中提取所述第一标识以及类型标识,所述类型标识用于区分不同类型的待升级设备;
基于所述第一标识以及所述类型标识生成编译信息表项,并记录在预设的编译信息表中。
8.一种代码文件的编译的装置,其特征在于,所述装置包括:
第一标识解析模块,用于从已获取到的压缩包中解析出所述压缩包中携带的第一标识;
代码文件下载模块,用于根据所述第一标识解析模块中解析出的所述第一标识从第一代码库服务器中下载所述第一标识对应的代码文件;
编译脚本确定模块,用于基于所述第一标识解析模块中解析出的所述第一标识与预设的编译脚本列表确定所述第一标识对应的编译脚本;
代码文件编译模块,用于通过所述编译脚本确定模块中确定的所述编译脚本对所述压缩包和所述代码文件进行编译从而获得编译结果。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
内核源码文件接收模块,用于接收第二代码库服务器发送的内核源码文件;
压缩包生成模块,用于基于所述内核源码文件接收模块中的所述内核源码文件生成所述压缩包。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
压缩包接收模块,用于接收第二编译服务器发送的所述压缩包,所述压缩包为所述第二编译服务器根据所述第二代码库服务器中的所述内核源码文件生成的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610850394.9A CN106406971B (zh) | 2016-09-26 | 2016-09-26 | 一种代码文件的编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610850394.9A CN106406971B (zh) | 2016-09-26 | 2016-09-26 | 一种代码文件的编译方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106406971A true CN106406971A (zh) | 2017-02-15 |
CN106406971B CN106406971B (zh) | 2019-05-07 |
Family
ID=57997317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610850394.9A Active CN106406971B (zh) | 2016-09-26 | 2016-09-26 | 一种代码文件的编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106406971B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168758A (zh) * | 2017-04-12 | 2017-09-15 | 北京小米移动软件有限公司 | 多代码库的代码编译检查方法及装置 |
CN107526621A (zh) * | 2017-08-07 | 2017-12-29 | 深圳芯邦科技股份有限公司 | 一种外置存储器主控代码编译方法和装置 |
CN107885503A (zh) * | 2017-11-11 | 2018-04-06 | 湖南大学 | 一种基于程序特征分析的迭代编译优化方法 |
CN109614109A (zh) * | 2018-11-16 | 2019-04-12 | 中国银行股份有限公司 | 应用部署方法、装置和系统 |
CN111290801A (zh) * | 2020-02-13 | 2020-06-16 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111767237A (zh) * | 2019-04-25 | 2020-10-13 | 北京京东尚科信息技术有限公司 | 模块间通信方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101776998A (zh) * | 2010-02-09 | 2010-07-14 | 华为终端有限公司 | 生成通用终端产品程序的方法和装置 |
US7971194B1 (en) * | 2005-06-16 | 2011-06-28 | Sap Portals Israel Ltd. | Programming language techniques for client-side development and execution |
CN102402452A (zh) * | 2011-12-12 | 2012-04-04 | 深圳市共进电子股份有限公司 | 一种编译方法及装置 |
US8191038B1 (en) * | 2007-10-09 | 2012-05-29 | Google Inc. | Using a templating language to produce a host language factory for a safe subset of a templated language |
US8677329B2 (en) * | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
CN103713889A (zh) * | 2012-09-29 | 2014-04-09 | 三亚中兴软件有限责任公司 | 一种应用的开发、编译和调试方法以及装置 |
CN104793946A (zh) * | 2015-04-27 | 2015-07-22 | 广州杰赛科技股份有限公司 | 基于云计算平台的应用部署方法和系统 |
US9122489B1 (en) * | 2013-03-13 | 2015-09-01 | Wal-Mart Stores, Inc. | Extended language precompiler |
CN105843623A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 目标程序的生成方法和装置 |
CN105867993A (zh) * | 2016-03-29 | 2016-08-17 | 乐视控股(北京)有限公司 | 一种软件产品编译方法及设备 |
-
2016
- 2016-09-26 CN CN201610850394.9A patent/CN106406971B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7971194B1 (en) * | 2005-06-16 | 2011-06-28 | Sap Portals Israel Ltd. | Programming language techniques for client-side development and execution |
US8191038B1 (en) * | 2007-10-09 | 2012-05-29 | Google Inc. | Using a templating language to produce a host language factory for a safe subset of a templated language |
US8677329B2 (en) * | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
CN101776998A (zh) * | 2010-02-09 | 2010-07-14 | 华为终端有限公司 | 生成通用终端产品程序的方法和装置 |
CN102402452A (zh) * | 2011-12-12 | 2012-04-04 | 深圳市共进电子股份有限公司 | 一种编译方法及装置 |
CN103713889A (zh) * | 2012-09-29 | 2014-04-09 | 三亚中兴软件有限责任公司 | 一种应用的开发、编译和调试方法以及装置 |
US9122489B1 (en) * | 2013-03-13 | 2015-09-01 | Wal-Mart Stores, Inc. | Extended language precompiler |
CN104793946A (zh) * | 2015-04-27 | 2015-07-22 | 广州杰赛科技股份有限公司 | 基于云计算平台的应用部署方法和系统 |
CN105843623A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 目标程序的生成方法和装置 |
CN105867993A (zh) * | 2016-03-29 | 2016-08-17 | 乐视控股(北京)有限公司 | 一种软件产品编译方法及设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168758A (zh) * | 2017-04-12 | 2017-09-15 | 北京小米移动软件有限公司 | 多代码库的代码编译检查方法及装置 |
CN107526621A (zh) * | 2017-08-07 | 2017-12-29 | 深圳芯邦科技股份有限公司 | 一种外置存储器主控代码编译方法和装置 |
CN107526621B (zh) * | 2017-08-07 | 2020-09-04 | 深圳芯邦科技股份有限公司 | 一种外置存储器主控代码编译方法和装置 |
CN107885503A (zh) * | 2017-11-11 | 2018-04-06 | 湖南大学 | 一种基于程序特征分析的迭代编译优化方法 |
CN107885503B (zh) * | 2017-11-11 | 2021-01-08 | 湖南大学 | 一种基于程序特征分析的迭代编译优化方法 |
CN109614109A (zh) * | 2018-11-16 | 2019-04-12 | 中国银行股份有限公司 | 应用部署方法、装置和系统 |
CN109614109B (zh) * | 2018-11-16 | 2022-02-01 | 中国银行股份有限公司 | 应用部署方法、装置和系统 |
CN111767237A (zh) * | 2019-04-25 | 2020-10-13 | 北京京东尚科信息技术有限公司 | 模块间通信方法和装置 |
CN111767237B (zh) * | 2019-04-25 | 2022-11-08 | 北京京东尚科信息技术有限公司 | 模块间通信方法和装置 |
CN111290801A (zh) * | 2020-02-13 | 2020-06-16 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106406971B (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406971A (zh) | 一种代码文件的编译方法及装置 | |
CN104793946B (zh) | 基于云计算平台的应用部署方法和系统 | |
CN104216700B (zh) | 基于云计算的html5应用的打包、安装、卸载、运行方法的系统 | |
CN107506221A (zh) | 应用程序升级方法、装置及设备 | |
EP2463816A1 (en) | Methods, apparatus, systems and computer readable mediums for use in sharing information between entities | |
CN109144548A (zh) | 一种基于git实现的多组件软件升级方法、装置及服务器 | |
CN106802817A (zh) | SQLite数据库的升级方法及装置 | |
CN106502746A (zh) | 应用程序的打包方法及装置 | |
US7571434B1 (en) | Method and apparatus for transparent invocation of a characteristics extractor for pattern-based system design analysis | |
CN108733400A (zh) | 一种App增量热更新方法及服务系统 | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
CN103809974A (zh) | 一种应用自动审核的方法、装置及云服务器 | |
CN106155742A (zh) | 组件更新处理方法及装置 | |
CN106648643A (zh) | 渠道包生成方法及装置、终端和服务器 | |
GB2462931A (en) | Digital media files republished in a consolidated collection with cleansed metadata | |
US9720671B2 (en) | Installation of customized applications | |
CN104885073B (zh) | 用于生成数字版本的系统和方法 | |
CN110297776A (zh) | 检测报告生成、接收方法、装置、设备及存储介质 | |
US20140359077A1 (en) | Method and apparatus for transmitting symbol files | |
CN104461618B (zh) | 加载模块的方法及装置 | |
CN109905426A (zh) | 一种用于发布软件的方法和系统 | |
CN112711432A (zh) | 用于网络安全设备的特征库升级方法及装置 | |
CN109086059A (zh) | 代码加载更新方法、装置及服务器 | |
US20200285630A1 (en) | Systems and methods for application data transaction auditing | |
CN114936030A (zh) | 一种基于权限控制的软件包管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: Binjiang District and Hangzhou city in Zhejiang Province Road 310051 No. 68 in the 6 storey building Applicant after: Hangzhou Dipu Polytron Technologies Inc Address before: Binjiang District and Hangzhou city in Zhejiang Province Road 310051 No. 68 in the 6 storey building Applicant before: Hangzhou Dipu Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |