CN105786499A - 一种软件打包的方法及系统 - Google Patents
一种软件打包的方法及系统 Download PDFInfo
- Publication number
- CN105786499A CN105786499A CN201610105409.9A CN201610105409A CN105786499A CN 105786499 A CN105786499 A CN 105786499A CN 201610105409 A CN201610105409 A CN 201610105409A CN 105786499 A CN105786499 A CN 105786499A
- Authority
- CN
- China
- Prior art keywords
- program
- information
- software
- software package
- packed
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种软件打包的方法及系统。该方法包括:获取待打包的多个程序的程序信息;根据所述程序信息判断各个程序支持的硬件类型信息和版本信息是否一致;如果各个程序支持的硬件类型信息和版本信息一致,则将所述多个程序进行打包。本发明提供的软件打包的方法及系统,通过检测待打包的各个程序的支持的硬件类型和版本是否一致,对待打包的各个程序进行匹配检测,提高了软件打包中程序匹配的效率和准确性。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种软件打包的方法及系统。
背景技术
软件中包含了多个程序,每个程序具有各自的功能,但是各个程序之间通常还要相互依赖,所以通常是将各个程序放到一起(即打包)提供给用户。每个程序支持多种硬件类型,比如i386,x86_64,arm,mips,同时程序通常也会分为release版本和debug版本,release版本去掉了程序中的调试信息以便减少程序大小,debug版本保留大量的调试信息以便方便定位。
软件发布的时候,会根据用户的需要发布指定的版本,比如发送给用户A的是i386的产品,发送给用户B的是arm产品的版本。但是按照上述的划分,同一套源代码可以生成4种类型、2种版本的程序,这样就会有8种组合,如果考虑到发送给用户的软件通常是多个程序的组合的话,比如软件中包括3个程序,那么实际上就会24种组合。现有的软件打包的方法中需要人工确定程序支持的硬件类型和版本的一致性,效率低,容易出现错误。
发明内容
本发明所要解决的技术问题是:现有的软件打包的方法中程序匹配检测效率低、准确性差的问题。
为解决上述技术问题,本发明一方面提出了一种软件打包的方法,该方法包括:
获取待打包的多个程序的程序信息;
根据所述程序信息判断各个程序支持的硬件类型信息和版本信息是否一致;
如果各个程序支持的硬件类型信息和版本信息一致,则将所述多个程序进行打包。
可选地,所述获取待打包的多个程序的程序信息,包括:
通过file命令获取待打包的多个程序支持的硬件类型信息和版本信息。
可选地,所述将所述多个程序进行打包,包括:
将软件头部信息写入软件文件,将所述多个程序内容写入所述软件头部信息之后。
可选地,所述软件头部信息包括程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
可选地,还包括:
获取软件头部信息;
其中,所述软件头部校验和为软件头部各个字节内容之和。
本发明另一方面提出了一种软件打包的系统,该系统包括:
程序信息获取单元,用于获取待打包的多个程序的程序信息;
程序信息判断单元,用于根据所述程序信息判断各个程序支持的硬件类型信息和版本信息是否一致;
软件打包单元,用于当各个程序支持的硬件类型信息和版本信息一致时,将所述多个程序进行打包。
可选地,所述程序信息获取单元,具体用于通过file命令获取待打包的多个程序支持的硬件类型信息和版本信息。
可选地,所述软件打包单元,具体用于当各个程序支持的硬件类型信息和版本信息一致时,将软件头部信息写入软件文件,将所述多个程序内容写入所述软件头部信息之后。
可选地,所述软件头部信息包括程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
可选地,该系统还包括软件头部信息获取单元,用于获取软件头部信息;
其中,所述软件头部校验和为软件头部各个字节内容之和。
本发明提供的软件打包的方法及系统,通过检测待打包的各个程序的支持的硬件类型和版本是否一致,对待打包的各个程序进行匹配检测,提高了软件打包中程序匹配的效率和准确性。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1示出了本发明一个实施例的软件打包的方法的示意图;
图2示出了本发明一个实施例的软件打包的系统的结构示意图。
具体实施方式
下面将结合附图对本发明的实施例进行详细描述。
图1是本发明一个实施例的软件打包的方法的示意图。如图1所示,该软件打包的方法包括:
S11:获取待打包的多个程序的程序信息;
S12:根据所述程序信息判断各个程序支持的硬件类型信息和版本信息是否一致;
S13:如果各个程序支持的硬件类型信息和版本信息一致,则将所述多个程序进行打包。
本实施例的软件打包的方法,通过检测待打包的各个程序的支持的硬件类型和版本是否一致,对待打包的各个程序进行匹配检测,提高了软件打包中程序匹配的效率和准确性。
进一步地,前述步骤S11中还包括下述的图中未示出的子步骤S11a:
通过file命令获取待打包的多个程序支持的硬件类型信息和版本信息。
举例来说,file命令获取各个程序的信息。file命令会返回硬件类型,比如:
(1)ELF64-bitLSBexecutable,x86_64表明硬件是x86_64
(2)ELF32-bitLSBexecutable,Intel80386表明硬件是i386
(3)ELF32-bitLSBexecutable,ARM表明硬件是ARM
(4)ELF64-bitLSBexecutable,MIPS表明硬件是mips
需要说明的是,32-bit表明是32位程序,64-bit表明是64位程序。
同时file命令还会返回如下信息:
(1)stripped。表明程序中已经没有符号表等调试信息,那么可以认为是release版本
(2)notstripped。表明程序中包含了符号表等调试信息,那么可以认为是debug版本
前述步骤S13中将所述多个程序进行打包还包括下述的图中未示出的子步骤S13a:
将软件头部信息写入软件文件,将所述多个程序内容写入所述软件头部信息之后。
换句话说,软件内容包括软件头部信息和多个程序内容两部分。
进一步地,所述软件头部信息包括程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
在实际应用中,打包后的软件内容如表1所示。其中,表中第1行为软件头部信息,软件头部信息之后包括多个程序内容。软件头部信息包括魔术字、软件版本号程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
表1打包后的软件内容
需要说明的是,魔术字是公司名称和产品类型的组合,用来表明软件的基本用途,这部分内容是不固定的,需要根据产品情况来调整。由于软件是整体提供的,需要一个软件版本号,软件版本号也不是固定的。软件头部校验和用来校验软件头部的正确性。
在一种可选的实施方式中,该方法还包括:
获取软件头部信息;
其中,所述软件头部校验和为软件头部各个字节内容之和。
具体来说,由于软件头部的信息不是很多,因此只需要一种简单的方法进行校验即可,本实施例采取的方法是对软件头部的信息按照字节为单位进行相加,并将结果记录在头部中的校验和字段。
比如头部信息一共是4个字节,每个字节的内容为:1,2,3,4,那么按照字节相加得到的数值就是1+2+3+4=10。
如果由于某种情况,其中一个字节发生变化,比如变为1,2,3,3,那么按照同样的方法计算得到的数值是1+2+3+3=9,和10不相等,因此可以认为软件包出现了问题。
当然如果由于某种情况变为1,3,3,3的话,是无法判断的头部出问题的,但是由于软件头内容比较少,且各个程序的信息中也保留了程序的校验值,因此使用一种简单快速的方法对头部进行判断是合适的。
下面以一个具体的实施方式为例说明本发明软件打包的方法。该软件打包的方法如下:
(1)读取待打包的各个程序,获取软件头部信息;其中,通过stat函数获取程序的大小;通过md5sum函数计算出程序的校验值。打包时,需要手动输入产品类型以及产品版本号,获取到这些内容后,将公司名称和产品类型进行组合,比如公司名为ABC,产品类型为0123def,那么魔术字部分就是ABC-0123def,魔术字的长度最大为16字节。
(2)做程序匹配验证:通过file命令获取待打包的多个程序的支持的硬件类型信息和版本信息,根据所述程序信息判断各个程序的支持的硬件类型信息和版本信息是否一致;
(3)如果程序匹配,则创建一个新文件,写入头部信息,并复制各个程序到头部信息后面。
图2示出了本发明一个实施例的软件打包的系统的结构示意图。如图2所示,该软件打包的系统包括:
程序信息获取单元21,用于获取待打包的多个程序的程序信息;
程序信息判断单元22,用于根据所述程序信息判断各个程序的支持的硬件类型信息和版本信息是否一致;
软件打包单元23,用于当各个程序支持的硬件类型信息和版本信息一致时,将所述多个程序进行打包。
在一种可选的实施方式中,所述程序信息获取单元,具体用于通过file命令获取待打包的多个程序的支持的硬件类型信息和版本信息。
所述软件打包单元,具体用于当各个程序支持的硬件类型信息和版本信息一致时,将软件头部信息写入软件文件,将所述多个程序内容写入所述软件头部信息之后。
所述软件头部信息包括程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
该系统还包括软件头部信息获取单元,用于获取软件头部信息;
其中,所述软件头部校验和为软件头部各个字节内容之和。
本实施例所述的系统可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。
本发明提供的软件打包的方法及系统,通过检测待打包的各个程序的支持的硬件类型和版本是否一致,对待打包的各个程序进行匹配检测,提高了软件打包中程序匹配的效率和准确性。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种软件打包的方法,其特征在于,包括:
获取待打包的多个程序的程序信息;
根据所述程序信息判断各个程序支持的硬件类型信息和版本信息是否一致;
如果各个程序支持的硬件类型信息和版本信息一致,则将所述多个程序进行打包。
2.根据权利要求1所述的软件打包的方法,其特征在于,所述获取待打包的多个程序的程序信息,包括:
通过file命令获取待打包的多个程序的支持的硬件类型信息和版本信息。
3.根据权利要求1所述的软件打包的方法,其特征在于,所述将所述多个程序进行打包,包括:
将软件头部信息写入软件文件,将所述多个程序内容写入所述软件头部信息之后。
4.根据权利要求3所述的软件打包的方法,其特征在于,所述软件头部信息包括程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
5.根据权利要求4所述的软件打包的方法,其特征在于,还包括:
获取软件头部信息;
其中,所述软件头部校验和为软件头部各个字节内容之和。
6.一种软件打包的系统,其特征在于,包括:
程序信息获取单元,用于获取待打包的多个程序的程序信息;
程序信息判断单元,用于根据所述程序信息判断各个程序支持的硬件类型信息和版本信息是否一致;
软件打包单元,用于当各个程序支持的硬件类型信息和版本信息一致时,将所述多个程序进行打包。
7.根据权利要求6所述的软件打包系统,其特征在于,所述程序信息获取单元,具体用于通过file命令获取待打包的多个程序支持的硬件类型信息和版本信息。
8.根据权利要求6所述的软件打包系统,其特征在于,所述软件打包单元,具体用于当各个程序支持的硬件类型信息和版本信息一致时,将软件头部信息写入软件文件,将所述多个程序内容写入所述软件头部信息之后。
9.根据权利要求8所述的软件打包系统,其特征在于,所述软件头部信息包括程序个数、软件头部校验和、各个程序的程序名、各个程序的大小和各个程序的校验值。
10.根据权利要求9所述的软件打包系统,其特征在于,还包括软件头部信息获取单元,用于获取软件头部信息;
其中,所述软件头部校验和为软件头部各个字节内容之和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610105409.9A CN105786499A (zh) | 2016-02-25 | 2016-02-25 | 一种软件打包的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610105409.9A CN105786499A (zh) | 2016-02-25 | 2016-02-25 | 一种软件打包的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105786499A true CN105786499A (zh) | 2016-07-20 |
Family
ID=56402263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610105409.9A Pending CN105786499A (zh) | 2016-02-25 | 2016-02-25 | 一种软件打包的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786499A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664254A (zh) * | 2018-05-09 | 2018-10-16 | 中山市博美科研技术服务有限公司 | 一种软件打包方法及装置 |
CN110990021A (zh) * | 2019-11-28 | 2020-04-10 | 杭州迪普科技股份有限公司 | 软件运行方法、装置、主控板及框式设备 |
CN112255965A (zh) * | 2020-10-22 | 2021-01-22 | 中山市华盛家具制造有限公司 | 一种设备加工中nc程序的获取方法 |
-
2016
- 2016-02-25 CN CN201610105409.9A patent/CN105786499A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664254A (zh) * | 2018-05-09 | 2018-10-16 | 中山市博美科研技术服务有限公司 | 一种软件打包方法及装置 |
CN110990021A (zh) * | 2019-11-28 | 2020-04-10 | 杭州迪普科技股份有限公司 | 软件运行方法、装置、主控板及框式设备 |
CN112255965A (zh) * | 2020-10-22 | 2021-01-22 | 中山市华盛家具制造有限公司 | 一种设备加工中nc程序的获取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858072B2 (en) | Portable executable file analysis | |
WO2017084266A1 (zh) | 一种定制多渠道安装包的方法及装置 | |
CN106919612B (zh) | 一种上线结构化查询语言脚本的处理方法及装置 | |
CN108279912A (zh) | 安卓多自定义属性安装包自动生成方法、系统及存储介质 | |
US20100218049A1 (en) | Method of Creating Signatures for Classifying Program Failures | |
CN106708704A (zh) | 一种对崩溃日志进行分类的方法和装置 | |
CN105786499A (zh) | 一种软件打包的方法及系统 | |
US9026612B2 (en) | Generating a custom parameter rule based on a comparison of a run-time value to a request URL | |
JP2015011372A (ja) | デバッグ支援システム、方法、プログラム及び記録媒体 | |
CN106681783A (zh) | 一种svn代码检测方法及其系统 | |
CN111026455B (zh) | 插件生成方法、电子设备及存储介质 | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
CN107844410A (zh) | 一种分布式集群系统的调试方法和装置 | |
US20200371771A1 (en) | Upgrade of a software product | |
US10489137B1 (en) | Software verification system and methods | |
CN108664254A (zh) | 一种软件打包方法及装置 | |
EP2535813A1 (en) | Method and device for generating an alert during an analysis of performance of a computer application | |
KR20190020363A (ko) | 동적 분석과 정적 분석을 연계한 프로그램을 분석하기 위한 방법 및 장치 | |
JP6954806B2 (ja) | 不具合検出装置、及び不具合検出方法 | |
CN113344549B (zh) | 项目工程文档更新方法、装置、计算机设备及存储介质 | |
CN115470214A (zh) | Dbc文件的生成方法、装置和电子设备 | |
JP6524827B2 (ja) | 情報処理装置、差分対応付け方法および差分対応付けプログラム | |
JP2005141406A (ja) | コンパイラ検査システムおよび同プログラム | |
JP2015041247A (ja) | ジョブ制御言語差分抽出システム及びジョブ制御言語差分抽出方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |