CN101916203A - 服务于移动通讯的终端软件平台的编译方法及系统 - Google Patents
服务于移动通讯的终端软件平台的编译方法及系统 Download PDFInfo
- Publication number
- CN101916203A CN101916203A CN2010102562768A CN201010256276A CN101916203A CN 101916203 A CN101916203 A CN 101916203A CN 2010102562768 A CN2010102562768 A CN 2010102562768A CN 201010256276 A CN201010256276 A CN 201010256276A CN 101916203 A CN101916203 A CN 101916203A
- Authority
- CN
- China
- Prior art keywords
- program
- compiling
- compiler
- compilation
- clist
- 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
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种服务于移动通讯的终端软件平台的编译方法,包括:依赖推导步骤,对系统编译程序进行实时监控,当所述系统编译程序发送申请创建进程的消息时,模仿操作系统发送消息使所述系统编译程序成功退出,并得到编译的命令行命令和命令列表;编译步骤,启动调度程序,根据所述命令列表,进行多进程程序的编译,并根据所述多进程程序的编译结果执行后续命令。同时,本发明还提供一种服务于移动通讯的终端软件平台的编译系统,包括:监控模块和编译器。通过实施本发明,只使用了原有的单进程的系统编译程序进行依赖关系的判断而不进行具体的编译,具体的编译由本发明提供的多进程的调度程序进行,大幅度提高了编译的效率。
Description
技术领域:
本发明涉及一种服务于打包平台的编译方法及系统,特别是一种服务于移动通讯的终端软件平台的编译方法及系统。
背景技术:
目前,3G通讯市场上典型的终端软件应用平台有美国高通公司主导的BREW软件平台,GOOGLE推出的Android软件平台,ACCESS公司开发的基于Linux的ALP软件平台和韩国SKT主导的T-PAK软件平台等。其中,BREW是无线二进制运行环境(Binary Runtime Environment forWireless)的缩写,是基于CDMA网络“无线互联网发射平台”上增值业务开发运行的基本平台。
目前打包平台所普遍使用的nmake工具是Microsoft ProgramMaintenance Utility的别称,是美国微软公司开发的一种编译管理工具,用于判断依赖和执行命令,执行的命令通常为编译或链接命令。nmake是单进程的程序,必须等待某个编译程序完成工作才能够进行下一个工作,在目前多核的计算平台上面白白浪费了很多资源。而且编译器每次运行都需要连接服务器验证是否正版,因此大部分时间浪费在网络的IO上,严重制约了编译打包的效率。
发明内容:
本发明的目的是为了克服现有的打包平台所使用的系统编译程序单进程编译打包效率低的缺点,提供了一种更为完善的技术解决方案。
本发明提供了一种服务于移动通讯的终端软件平台的编译方法,包括:
依赖推导步骤,对系统编译程序进行实时监控,当所述系统编译程序发送申请创建进程的消息时,模仿操作系统发送消息使所述系统编译程序成功退出,并得到编译的命令行命令和命令列表;
编译步骤,启动调度程序,根据所述命令列表,进行多进程程序的编译,并根据所述多进程程序的编译结果执行后续命令。
其中,在所述依赖推导步骤中,进一步包括:
当所述系统编译程序进行依赖判断,并根据依赖关系向操作系统发送申请创建进程的消息时,截取所述消息,并且记录所述消息的数据;
模仿操作系统向所述系统编译程序发送“进程成功完成”的消息;
重复以上步骤,直到所述系统编译程序成功退出,并且记录所述命令行命令和命令列表。
其中,所述编译步骤中,进一步包括:
启动所述调度程序,对所述命令列表进行判断,当所述命令列表为空,或者所述系统编译程序出错时,退出所述调度程序;
当所述命令列表不为空,并且所述系统编译程序没有出错时,从所述命令列表中取出一条命令,进行判断;
当所述取出的命令为编译命令时,多进程编译模块进行编译处理;
当所述取出的命令不是编译命令时,等待所述多进程编译模块完成所有工作后,读取编译结果进行判断,当所述结果出错时,标记为出错,退出所述调度程序;
当所述结果正常时,执行后续命令。
其中,所述后续命令包括链接命令。
其中,所述多进程编译模块进行编译处理进一步包括:
对所述多进程编译模块的状态进行判断;
当所述多进程编译模块出错时,退出该编译模块;
当所述多进程编译模块的状态正常时,根据需要创建多个编译进程,并监控所有编译进程的工作状态;
当所述所有编译进程中的某个编译进程出错时,该编译进程标记为出错;
等待所述的所有编译进程完成后,记录所述编译结果。
本发明还提供了一种服务于移动通讯的终端软件平台的编译系统,包括:
监控模块,对系统编译程序进行实时监控,当所述系统编译程序发送申请创建进程的消息时,模仿操作系统发送消息使所述系统编译程序成功退出,并得到编译的命令行命令和命令列表;
编译器,用于启动调度程序,根据所述命令列表,进行多进程程序的编译,并根据所述多进程程序的编译结果执行后续命令。
其中,在所述监控模块中,进一步包括:
消息截取单元,当所述系统编译程序进行依赖判断,并根据依赖关系向操作系统发送申请创建进程的消息时,截取所述消息,并且记录所述消息的数据;
模仿单元,模仿操作系统向所述系统编译程序发送“进程成功完成”的消息;
指示单元,指示所述消息截取单元和模仿单元重复工作,直到所述系统编译程序成功退出,并且记录所述命令行命令和命令列表。
其中,在所述编译器中,进一步包括:
命令列表的判断模块,用于对所述命令列表进行判断,当所述命令列表已经为空,或者所述系统编译程序出错时,退出所述调度程序;
编译命令的判断模块,当所述命令列表不为空,并且所述系统编译程序没有出错时,从所述命令列表中取出一条命令,进行判断;
多进程编译模块,当所述取出的命令为编译命令时,进行编译处理;
编译结果的判断模块,当所述取出的命令不是编译命令时,等待所述多进程编译模块完成所有工作后,读取编译结果进行判断,当所述结果出错时,标记为出错,退出所述调度程序;
后续命令模块,当所述结果正常时,执行后续命令。
其中,在所述后续命令模块中,所述后续命令包括链接命令。
其中,在所述多进程编译模块中,进一步包括:
状态判断单元,对所述多进程编译模块的状态进行判断,当所述多进程编译模块出错时,退出该编译模块;
进程控制单元,当所述多进程编译模块的状态正常时,根据需要创建多个编译进程,并监控所有编译进程的工作状态,当所述所有编译进程中的某个编译进程出错时,该编译进程标记为出错;
结果返回单元,等待所述的所有编译进程完成后,记录所述编译结果。
通过实施本发明,只使用了原有的单进程系统编译程序进行依赖关系的判断而不进行具体的编译,具体的编译由本发明提供的多进程的调度程序进行。这样就解决了原有的系统编译程序只能进行单线程编译的问题,大幅度提高了编译的效率。
附图说明:
图1为服务于移动通讯的终端软件平台的编译方法的流程图;
图2为多进程编译模块进行编译处理的细节的流程图;
图3为服务于移动通讯的终端软件平台的编译系统的结构框图;
图4为多进程编译模块的细节的结构框图。
具体实施方式:
下面结合附图详细说明本发明的具体实施方式。
图1示出了本发明较佳实施例的编译方法的流程。在本实施例中,提供了一种使用API HOOK接口程序截取技术对基于BREW平台的nmake系统编译程序进行编译的方法。API全称是Application ProgrammingInterface,即用于编写程序(不限于应用程序)的接口。凡是能够处理被拦截的函数、消息(Message)或事件(Event)的代码都叫做Hook,Hook可以概括为拦截并处理消息的技术。API Hook就是拦截并处理API的技术。在本实施例中用于拦截操作系统的API,有多种具体的实现方式。
在步骤S11中,使用所述API HOOK技术对nmake程序进行实时监控。在步骤S12中,当所述nmake程序进行依赖判断,根据依赖关系向操作系统发送申请创建进程的消息时,使用所述API HOOK技术截取所述消息,并且记录所述消息的数据(步骤S13)。在步骤S14中,使用所述API HOOK技术模仿操作系统向所述nmake程序发送“进程成功完成”的消息;在步骤S15中,在所述nmake程序未成功退出时(步骤S15:假),重复步骤S13和S14,直到所述nmake程序成功退出,并且记录所述命令列表。其中,nmake只要进程返回值为0即继续运行下一个进程,因此只要模仿操作系统返回0值给nmake即可使nmake发送下一个创建进程的消息。
在所述nmake程序成功退出后,编译器启动调度程序(步骤S16)。在步骤S17中,所述编译器对所述命令列表进行判断。当所述命令列表为空,或者所述nmake程序出错时(步骤S17:真),所述编译器退出所述调度程序(步骤S18)。在步骤S19中,当所述命令列表不为空,并且所述nmake程序没有出错时(步骤S17:真),所述编译器从所述命令列表中取出一条命令,进行判断。在步骤S20中,当所述编译命令的判断步骤中取出的命令为编译命令时(步骤S19:真),多进程编译模块进行编译处理。在步骤S21中,当所述编译命令的判断步骤中取出的命令不是编译命令时(步骤S19:假),等待所述多进程编译模块完成所有工作后,所述编译器读取编译结果进行判断(步骤S22),当所述结果出错时(步骤S22:真),所述编译器标记为出错(步骤S23),返回所述命令列表的判断步骤S17,此时判断出所述nmake程序出错,退出所述调度程序。
在步骤S24中,当所述结果正常时,执行后续命令。其中,所述后续命令包括链接命令、打包命令等非编译命令。具体的命令等待现有的编译进程全部结束时根据具体情况予以确定。
图2示出了多进程编译模块进行编译处理的细节的流程。在步骤S201中,编译器对所述多进程编译模块的状态进行判断。当所述多进程编译模块出错时(步骤S201:真),退出该编译模块。
在步骤S202中,当所述多进程编译模块的状态正常时(步骤S201:假),所述多进程编译模块根据需要创建多个编译进程,并监控所有编译进程的工作状态。当所述监控过程中发现某个编译进程出错时(步骤S203:真),该编译进程标记为出错(步骤S204)。等待所述的所有编译进程完成后,记录所述编译结果。
图3为服务于移动通讯的终端软件平台的编译系统的结构框图。如图3所示,该编译系统主要包括监控模块1、编译器2。在本实施例中,所述编译系统通过一种API HOOK接口程序截取技术对基于BREW平台的nmake系统编译程序进行编译。
监控模块1对nmake程序进行实时监控,当所述系统编译程序发送申请创建进程的消息时,模仿操作系统发送消息使所述系统编译程序成功退出,并得到编译的命令行命令和命令列表。该监控模块1进一步包括:
消息截取单元11,当所述nmake程序进行依赖判断,并根据依赖关系向操作系统发送申请创建进程的消息时,使用所述API HOOK技术截取所述消息,并且记录所述消息的数据;
模仿单元12,使用所述API HOOK技术模仿操作系统向所述nmake程序发送“进程成功完成”的消息;
指示单元13,指示所述消息截取单元11和模仿单元12重复工作,直到所述nmake程序成功退出,并且记录所述命令行命令和命令列表。
编译器2,用于启动调度程序,根据所述命令列表,执行多进程程序的编译命令,并根据所述多进程程序的编译结果执行后续命令。该编译器2,进一步包括:
命令列表的判断模块21,用于对所述命令列表进行判断,当所述命令列表已经为空,或者所述nmake程序出错时,指示所述编译器退出所述调度程序;
编译命令的判断模块22,当所述命令列表不为空,并且所述nmake程序没有出错时,该模块从所述命令列表中取出一条命令,进行判断;
多进程编译模块23,当所述编译命令的判断模块中取出的命令为编译命令时,对所述编译命令进行编译处理;
编译结果的判断模块24,当所述编译命令的判断步骤中取出的命令不是编译命令时,等待所述多进程编译模块完成所有工作后,所述编译器对编译结果进行判断,当所述结果出错时,所述编译器标记为出错,返回所述命令列表的判断模块21,此时判断出所述nmake程序出错,退出所述调度程序;
后续命令模块25,当编译结果的判断模块24得出的结果正常时,执行后续命令。其中,所述后续命令包括链接命令、打包命令等非编译命令。具体的命令等待现有的编译进程全部结束时根据具体情况予以确定。
图4为多进程编译模块的细节的结构框图。如图4所示,多进程编译模块23进一步包括:
状态判断单元231,对所述多进程编译模块的状态进行判断,当所述多进程编译模块出错时,退出该编译模块;
进程控制单元232,当所述多进程编译模块的状态正常时,根据需要创建多个编译进程,并监控所有编译进程的工作状态,当所述所有编译进程中的某个编译进程出错时,该编译进程标记为出错;
结果返回单元233,等待所述的所有编译进程完成后,记录所述编译结果。
前述的详细说明及附图是通过文字解释和图示来进行的,其目的不在于限定权利要求的保护范围。本说明书中的具体实施方式的各个变种对于普通技术人员来说显而易见,并处于权利要求及其等同技术的保护范围内。
Claims (10)
1.一种服务于移动通讯的终端软件平台的编译方法,包括:
依赖推导步骤,对系统编译程序进行实时监控,当所述系统编译程序发送申请创建进程的消息时,模仿操作系统发送消息使所述系统编译程序成功退出,并得到编译的命令行命令和命令列表;
编译步骤,启动调度程序,根据所述命令列表,进行多进程程序的编译,并根据所述多进程程序的编译结果执行后续命令。
2.根据权利要求1所述的编译方法,其特征在于,在所述依赖推导步骤中,进一步包括:
当所述系统编译程序进行依赖判断,并根据依赖关系向操作系统发送申请创建进程的消息时,截取所述消息,并且记录所述消息的数据;
模仿操作系统向所述系统编译程序发送“进程成功完成”的消息;
重复以上步骤,直到所述系统编译程序成功退出,并且记录所述命令行命令和命令列表。
3.根据权利要求1所述的编译方法,其特征在于,所述编译步骤中,进一步包括:
启动所述调度程序,对所述命令列表进行判断,当所述命令列表为空,或者所述系统编译程序出错时,退出所述调度程序;
当所述命令列表不为空,并且所述系统编译程序没有出错时,从所述命令列表中取出一条命令,进行判断;
当所述取出的命令为编译命令时,多进程编译模块进行编译处理;
当所述取出的命令不是编译命令时,等待所述多进程编译模块完成所有工作后,读取编译结果进行判断,当所述结果出错时,标记为出错,退出所述调度程序;
当所述结果正常时,执行后续命令。
4.根据权利要求3所述的编译方法,其特征在于,所述后续命令包括链接命令。
5.根据权利要求3所述的编译方法,其特征在于,所述多进程编译模块进行编译处理进一步包括:
对所述多进程编译模块的状态进行判断;
当所述多进程编译模块出错时,退出该编译模块;
当所述多进程编译模块的状态正常时,根据需要创建多个编译进程,并监控所有编译进程的工作状态;
当所述所有编译进程中的某个编译进程出错时,该编译进程标记为出错;
等待所述的所有编译进程完成后,记录所述编译结果。
6.一种服务于移动通讯的终端软件平台的编译系统,包括:
监控模块,对系统编译程序进行实时监控,当所述系统编译程序发送申请创建进程的消息时,模仿操作系统发送消息使所述系统编译程序成功退出,并得到编译的命令行命令和命令列表;
编译器,用于启动调度程序,根据所述命令列表,进行多进程程序的编译,并根据所述多进程程序的编译结果执行后续命令。
7.根据权利要求6所述的编译系统,其特征在于,在所述监控模块中,进一步包括:
消息截取单元,当所述系统编译程序进行依赖判断,并根据依赖关系向操作系统发送申请创建进程的消息时,截取所述消息,并且记录所述消息的数据;
模仿单元,模仿操作系统向所述系统编译程序发送“进程成功完成”的消息;
指示单元,指示所述消息截取单元和模仿单元重复工作,直到所述系统编译程序成功退出,并且记录所述命令行命令和命令列表。
8.根据权利要求6所述的编译系统,其特征在于,在所述编译器中,进一步包括:
命令列表的判断模块,用于对所述命令列表进行判断,当所述命令列表已经为空,或者所述系统编译程序出错时,退出所述调度程序;
编译命令的判断模块,当所述命令列表不为空,并且所述系统编译程序没有出错时,从所述命令列表中取出一条命令,进行判断;
多进程编译模块,当所述取出的命令为编译命令时,进行编译处理;
编译结果的判断模块,当所述取出的命令不是编译命令时,等待所述多进程编译模块完成所有工作后,读取编译结果进行判断,当所述结果出错时,标记为出错,退出所述调度程序;
后续命令模块,当所述结果正常时,执行后续命令。
9.根据权利要求8所述的编译系统,其特征在于,在所述后续命令模块中,所述后续命令包括链接命令。
10.根据权利要求8所述的编译系统,其特征在于,在所述多进程编译模块中,进一步包括:
状态判断单元,对所述多进程编译模块的状态进行判断,当所述多进程编译模块出错时,退出该编译模块;
进程控制单元,当所述多进程编译模块的状态正常时,根据需要创建多个编译进程,并监控所有编译进程的工作状态,当所述所有编译进程中的某个编译进程出错时,该编译进程标记为出错;
结果返回单元,等待所述的所有编译进程完成后,记录所述编译结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010256276 CN101916203B (zh) | 2010-08-18 | 2010-08-18 | 服务于移动通讯的终端软件平台的编译方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010256276 CN101916203B (zh) | 2010-08-18 | 2010-08-18 | 服务于移动通讯的终端软件平台的编译方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916203A true CN101916203A (zh) | 2010-12-15 |
CN101916203B CN101916203B (zh) | 2012-12-26 |
Family
ID=43323720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010256276 Expired - Fee Related CN101916203B (zh) | 2010-08-18 | 2010-08-18 | 服务于移动通讯的终端软件平台的编译方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916203B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109375991A (zh) * | 2017-08-10 | 2019-02-22 | 中国石油化工股份有限公司 | 一种将单进程改造为多进程的方法及系统 |
CN109857406A (zh) * | 2019-02-15 | 2019-06-07 | 上海微小卫星工程中心 | 卫星嵌入式软件批处理系统和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1853165A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于多线程的编译器创建辅助线程的方法和装置 |
CN1924805A (zh) * | 2005-09-02 | 2007-03-07 | 腾讯科技(深圳)有限公司 | 在无线二进制运行环境平台实现动态链接库方法 |
US20070283356A1 (en) * | 2006-05-31 | 2007-12-06 | Yun Du | Multi-threaded processor with deferred thread output control |
US20070294696A1 (en) * | 2006-06-20 | 2007-12-20 | Papakipos Matthew N | Multi-thread runtime system |
-
2010
- 2010-08-18 CN CN 201010256276 patent/CN101916203B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1853165A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于多线程的编译器创建辅助线程的方法和装置 |
CN1924805A (zh) * | 2005-09-02 | 2007-03-07 | 腾讯科技(深圳)有限公司 | 在无线二进制运行环境平台实现动态链接库方法 |
US20070283356A1 (en) * | 2006-05-31 | 2007-12-06 | Yun Du | Multi-threaded processor with deferred thread output control |
US20070294696A1 (en) * | 2006-06-20 | 2007-12-20 | Papakipos Matthew N | Multi-thread runtime system |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109375991A (zh) * | 2017-08-10 | 2019-02-22 | 中国石油化工股份有限公司 | 一种将单进程改造为多进程的方法及系统 |
CN109375991B (zh) * | 2017-08-10 | 2021-07-27 | 中国石油化工股份有限公司 | 一种将单进程改造为多进程的方法及系统 |
CN109857406A (zh) * | 2019-02-15 | 2019-06-07 | 上海微小卫星工程中心 | 卫星嵌入式软件批处理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101916203B (zh) | 2012-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102917095B (zh) | 一种基于Android系统的终端测试的方法及装置 | |
CN102576331B (zh) | 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法 | |
WO2020228449A1 (zh) | 一种节点选择方法和装置 | |
EP2336882A1 (en) | Technique for run-time provision of executable code using off-device services | |
JP2014523022A5 (zh) | ||
KR102183185B1 (ko) | 애플리케이션 프로그래밍 인터페이스들에 대한 런타임 액세스의 제어 | |
WO2012142798A1 (zh) | 一种应用程序加载的方法及装置 | |
CN104731706A (zh) | 用于使用分布式计算的测试管理的方法和装置 | |
CN101169733A (zh) | 用于提供基于策略的操作系统服务的方法和系统 | |
EP3032413B1 (en) | Code generation method, compiler, scheduling method, apparatus and scheduling system | |
WO2005084202A2 (en) | Execution of unverified programs in a wireless device operating environment | |
CN106775781B (zh) | 减小应用安装包的方法、装置及电子设备 | |
CN112905472A (zh) | 内核调试系统及方法 | |
CN103176899A (zh) | 手机模拟器及在宿主机上模拟手机功能的方法 | |
CN110659031A (zh) | 应用程序的编译方法、装置、电子设备及存储介质 | |
CN101916203B (zh) | 服务于移动通讯的终端软件平台的编译方法及系统 | |
CN104503750A (zh) | 进程清理方法及装置 | |
US9904574B2 (en) | Parallel computing without requiring antecedent code deployment | |
JPH08506912A (ja) | ユーザー・インターフェイスを含むインターセプション・システムと方法 | |
CN113138768A (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN111240686B (zh) | 云编译方法和系统、终端设备、云端服务器及存储介质 | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
CN113157429A (zh) | 一种saas云服务实现方法及系统 | |
CN103294874B (zh) | 用于电磁仿真计算系统FEKO的Web服务封装方法以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200526 Address after: 310051 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Alibaba (China) Co.,Ltd. Address before: 100080, Beijing, Suzhou Street, Haidian District No. 29 hospital, No. 18, building 16, Scandinavia Patentee before: UC MOBILE Ltd. |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121226 Termination date: 20200818 |
|
CF01 | Termination of patent right due to non-payment of annual fee |