CN101216776A - 一种自动创建编译环境的方法及*** - Google Patents
一种自动创建编译环境的方法及*** Download PDFInfo
- Publication number
- CN101216776A CN101216776A CNA2008100562291A CN200810056229A CN101216776A CN 101216776 A CN101216776 A CN 101216776A CN A2008100562291 A CNA2008100562291 A CN A2008100562291A CN 200810056229 A CN200810056229 A CN 200810056229A CN 101216776 A CN101216776 A CN 101216776A
- Authority
- CN
- China
- Prior art keywords
- file
- critical file
- path
- compiling environment
- exists
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种自动创建编译环境的方法,包括:步骤1,根据待编译目标单板对应的关键文件及所述关键文件对应的属性要求,在硬件驱动器中查找所述关键文件;步骤2,将查找到的所述关键文件的存在路径设置为编译器的工作路径,根据所述编译器的工作路径启动命令行编译环境,以编译所述待编译目标单板的代码。从而能够自动创建一个命令行编译环境,节省劳动时间,提高劳动效率,增强代码的可移植性。
Description
技术领域
本发明涉及通信领域,尤其涉及一种自动创建编译环境的方法及***。
背景技术
目前在通信***的实际应用中,往往会用到不同CPU类型的单板,比如PowerPC、IntelX86、ARM、XSCALE、C51、IXP2400。在编译上述单板的代码时,通常采用命令行方式。在针对不同类型的单板及不同型号的CPU进行编译时,使用的编译器可能不同,编译器安装在不同的目录下,并且可能在注册表中找不到相关的信息。
按照传统的方法,为了能够同时编译多块单板,往往在一个批处理文件中手工设置针对不同CPU类型的编译器的安装路径。使用上述方法,在每次将待编译代码移植到其它机器上的时候,都需要修改该批处理文件,使之与移植后机器的安装路径匹配。此外,在每次编译的时候,还需要手工启动一个命令,将要编译的整个版本目录映射一个驱动器盘符,再逐次进入到该驱动器盘符下的各单板的目录下,进行编译器的路径设置,然后才能进行编译。当版本的编译次数较少,涉及的研发人员不多时,该方法还可以被接受。但当待编译的单板版本较多,研发队伍庞大时,使用该方法使工作效率下降。
发明内容
为解决上述问题,本发明提供了一种自动创建编译环境的方法及***,其目的在于自动地建立一个命令行编译环境,节省劳动时间,提高劳动效率,增强代码的可移植性。
本发明公开了一种自动创建编译环境的方法,包括:
步骤1,根据待编译目标单板对应的关键文件及所述关键文件对应的属性要求,在硬件驱动器中查找所述关键文件;
步骤2,将查找到的所述关键文件的存在路径设置为编译器的工作路径,根据所述编译器的工作路径启动命令行编译环境,以编译所述待编译目标单板的代码。
所述步骤1进一步包括:
步骤21,根据操作***注册表信息,解析得到硬盘驱动器列表;
步骤22,根据所述硬盘驱动器列表,在硬盘驱动器中查找所述关键文件;
步骤23,判断查找到的关键文件是否满足所述关键文件对应的属性要求,如果不满足,则执行步骤22继续查找。
所述步骤23后还包括,步骤24,将查找到的所述关键文件的存在路径,保存到搜索结果文件中所述待编译目标单板对应的单板类型条目中。
所述步骤1前还包括,步骤41,在所述搜索结果文件中查找所述关键文件的存在路径,如果未查找到,执行步骤1,否则,执行步骤2。
所述步骤41进一步包括:
步骤51,判断所述搜索结果文件是否存在,如果不存在,执行步骤1;
步骤52,在所述搜索结果文件中查找所述待编译目标单板对应的单板类型条目,如果未查找到,执行步骤1;
步骤53,判断在所述单板类型条目中的关键文件存在路径下,是否存在满足所述属性要求的关键文件,如果不存在,执行步骤1,否则,执行步骤2。
所述步骤22还包括,如果未查找到所述关键文件,提供出错信息,所述方法异常结束。
本发明还公开了一种自动创建编译环境的***,包括:
查找模块,用于根据待编译目标单板对应的关键文件及所述关键文件对应的属性在驱动器中查找所述关键文件;
执行模块,用于将查找到的所述关键文件的存在路径设置为编译器的工作路径,根据所述编译器的工作路径启动命令行编译环境,以编译所述待编译目标单板的代码。
所述查找模块进一步用于,根据操作***注册表信息,解析得到硬盘驱动器列表,根据所述硬盘驱动器列表,在硬盘驱动器中查找所述关键文件,判断查找到的关键文件是否满足所述关键文件对应的属性要求,如果不满足则继续查找。
所述查找模块还用于,将查找到的所述关键文件的存在路径,保存到搜索结果文件中所述待编译目标单板对应的单板类型条目中。
所述执行模块还用于在所述搜索结果文件中查找所述关键文件的存在路径,如果未查找到,则通过所述查找模块查找到所述关键文件的存在路径,如果查找到,则设置编译器的工作路径为查找到的关键文件存在路径。
本发明的有益效果在于,采用本发明所述方法及***,能够自动创建一个命令行编译环境,减少代码移植的困难,提高工作效率,并且还可以有效预防因为代码版本与编译环境不匹配所产生的问题。
附图说明
图1是本发明***结构图;
图2是实现本发明方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,自动创建编译环境的***,包括:
查找模块101,用于根据操作***注册表信息,解析得到硬盘驱动器列表,根据所述硬盘驱动器列表,在各个硬盘驱动器中查找所述关键文件,判断查找到的关键文件是否满足所述关键文件对应的属性要求,如果不满足则继续查找,如果满足,则将查找到的所述关键文件的存在路径,保存到搜索结果文件中的待编译目标单板对应的单板类型条目中,如果最终未查找到满足属性要求的关键文件,则提供出错信息,并异常结束流程。
执行模块102,用于判断所述搜索结果文件是否存在,如果不存在,则通过查找模块101进行查找,否则,判断所述搜索结果文件中是否存在所述待编译目标单板对应的单板类型条目,如果不存在,则通过查找模块101进行查找,否则,判断在所述单板类型条目中的关键文件存在路径下,是否存在满足所述属性要求的关键文件,如果不存在,通过查找模块101进行查找,如果存在,将查找到的所述关键文件的存在路径设置为编译器的工作路径,根据所述编译器的工作路径启动命令行编译环境,以编译所述待编译目标单板的代码。
本发明的方法为通过解析操作***的注册表中的数据,得到硬盘驱动器列表,通过在各个硬盘驱动器中查找关键文件,判断查找到的关键文件是否满足属性要求,以获得编译器的工作路径,从而建立对应于待编译目标单板的命令行编译环境。判断硬盘驱动器是否存在,判断的方法为判断硬盘驱动器下面的根文件是否存在,例如要判断C盘是否存在,只要判断根文件c:\是否存。具体解析方法是在注册表项目HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices中查找具有特征字符串\DosDevices\的字符串,提取特征字符串所在一行的字符串,并提取紧接特征字符串后的一个字母,该字母为存在的驱动器盘符字母。使用注册表项目而不采用罗列26个字母是因为项目中通常不含映射的驱动器盘符,只要提取有效的盘符字母即可,而采用罗列26个字母的方法,则需要排除虚拟映射的盘符,造成过程复杂化。
当硬盘空间过大时,关键文件搜索时间可能会过长。为了缩短编译环境的创建时间,减少查找过程,本发明将查找到的对应于待编译目标单板的关键文件存在路径,保存到搜索结果文件中待编译目标单板对应的单板类型条目中,搜素结果文件位于特定目录下。首先通过搜索结果文件查找确定路径,如果通过搜索结果文件不能确定,再执行查找过程。
本发明的方法实现流程如图2所示:
步骤S201,判断搜索结果文件是否已经存在,如果不存在,则执行步骤S206,否则,执行步骤S202;
步骤S202,在搜索结果文件中,查找待编译目标单板对应的单板类型条目,如果未查找到,则执行步骤S206,否则,执行步骤S203;
步骤S203,判断在查找到的单板类型条目提供的路径下,是否存在满足关键文件属性要求的关键文件,如果不存在,执行步骤S206,否则,执行步骤S204;
步骤S204,设置编译器工作路径为在搜索结果文件中待编译目标单板对应的单板类型条目提供的路径;
步骤S205,根据设置的编译器工作路径,启动一个命令行编译环境;
步骤S206,根据注册表中存储的设备信息,解析得到设备所有硬盘驱动器列表;
步骤S207,根据硬盘驱动器列表,依次在各个硬盘驱动器中查找关键文件,如果查找到,则执行步骤S208,否则,执行步骤S210;
步骤S208,判断查找到的关键文件的属性是否满足属性要求,如果满足,则执行步骤S209,否则执行步骤S207;
步骤S209,将查找到的关键文件的存在路径保存到搜索结果文件中待编译目标单板对应的单板类型条目中。
步骤S210,提供出错信息,方法异常结束。
具体实施例描述如下。
采用一个CPU类型是XSCALE的单板BOARD_A,其编译器安装路径为DIR_A,辅助工具安装路径为DIR_A_AUX,一个CPU类型是PowerPC的单板BOARD_B,其编译器安装路径为DIR_B,一个CPU类型是C51的单板BOARD_C,其编译器安装路径为DIR_C。
BOARD_A对应两个关键文件ccarm.exe和uca.exe,其中ccarm.exe是C语言编译程序,uca.exe是微码工具,属性要求为ccarm.exe的有效时间(上次修改时间)是1999-04-23 00:00~1999-04-23 23:59,uca.exe的有效时间是2005-08-21 00:00~9999-12-31 23:59。BOARD_B对应关键文件为ccppc.exe,属性要求为有效大小是133174字节。BOARD_C对应关键文件c51.exe。
应用本发明方法处理并编译BOARD_A的代码,操作如下:
判断搜索结果文件是否已经存在,如果不存在,则进行查找过程,否则,,在搜索结果文件中,查找BRAOAD_A对应的单板类型条目,如果未查找到,则执行查找过程,否则,判断在查找到的单板类型条目提供的路径下,是否分别存在满足有效时间在1999-04-23 00:00~1999-04-23 23:59的文件ccarm.exe,有效时间在2005-08-21 00:00~9999-12-31 23:59的文件uca.exe,如果不存在,执行查找过程,否则,设置编译器工作路径为在搜索结果文件中待编译目标单板对应的单板类型条目提供的路径,进入BOARD_A所在的编译目录,加上相关的编译命令make BOARD_A,然后运行批处理,开始进行编译。如果编译工具与待编译代码的要求不匹配,则会报错,并提示描述代码版本所需要的文件。
查找过程为,根据注册表中存储的设备信息,解析得到设备的硬盘驱动器列表,根据硬盘驱动器列表,依次在各个硬盘驱动器中查找关键文件,如果查找到,则判断查找到的ccarm.exe文件有效时间是否在1999-04-2300:00~1999-04-23 23:59范围内,uca.exe的有效时间是否在2005-08-2100:00~9999-12-31 23:59范围内,如果在所述范围内,将查找到的ccarm.exe存在路径DIR_A和uca.exe存在DIR_A_AUX保存到搜索结果文件中待编译目标单板对应的单板类型条目中,如果不满足要求,则继续查找。如果最终没有查找到,则提供出错信息,方法异常结束。
如果要编译三块单板的代码,则确定了三个单板的关键文件存在路径后,分别将三个单板的编译器工作路径设置为关键文件存在路径,添加相关编译命令,运行批处理,则三个单板的代码被一次编译完成。
如果需要动态地手工逐次编译单板代码,则可以将编译器路径设置及编译命令合成一个命令doskey,存储于该批处理文件中,运行批处理后,调用命令doskey,以完成动态地手工编译。
Claims (10)
1.一种自动创建编译环境的方法,其特征在于,包括:
步骤1,根据待编译目标单板对应的关键文件及所述关键文件对应的属性要求,在硬件驱动器中查找所述关键文件;
步骤2,将查找到的所述关键文件的存在路径设置为编译器的工作路径,根据所述编译器的工作路径启动命令行编译环境,以编译所述待编译目标单板的代码。
2.如权利要求1所述自动创建编译环境的方法,其特征在于,所述步骤1进一步包括:
步骤21,根据操作***注册表信息,解析得到硬盘驱动器列表;
步骤22,根据所述硬盘驱动器列表,在硬盘驱动器中查找所述关键文件;
步骤23,判断查找到的关键文件是否满足所述关键文件对应的属性要求,如果不满足,则执行步骤22继续查找。
3.如权利要求2所述自动创建编译环境的方法,其特征在于,所述步骤23后还包括,步骤24,将查找到的所述关键文件的存在路径,保存到搜索结果文件中所述待编译目标单板对应的单板类型条目中。
4.如权利要求3所述自动创建编译环境的方法,其特征在于,所述步骤1前还包括,步骤41,在所述搜索结果文件中查找所述关键文件的存在路径,如果未查找到,执行步骤1,否则,执行步骤2。
5.如权利要求4所述自动创建编译环境的方法,其特征在于,所述步骤41进一步包括:
步骤51,判断所述搜索结果文件是否存在,如果不存在,执行步骤1;
步骤52,在所述搜索结果文件中查找所述待编译目标单板对应的单板类型条目,如果未查找到,执行步骤1;
步骤53,判断在所述单板类型条目中的关键文件存在路径下,是否存在满足所述属性要求的关键文件,如果不存在,执行步骤1,否则,执行步骤2。
6.如权利要求2、3、4或5所述自动创建编译环境的方法,其特征在于,所述步骤22还包括,如果未查找到所述关键文件,提供出错信息,所述方法异常结束。
7.一种自动创建编译环境的***,其特征在于,包括:
查找模块,用于根据待编译目标单板对应的关键文件及所述关键文件对应的属性在驱动器中查找所述关键文件;
执行模块,用于将查找到的所述关键文件的存在路径设置为编译器的工作路径,根据所述编译器的工作路径启动命令行编译环境,以编译所述待编译目标单板的代码。
8.如权利要求7所述自动创建编译环境的***,其特征在于,所述查找模块进一步用于,根据操作***注册表信息,解析得到硬盘驱动器列表,根据所述硬盘驱动器列表,在硬盘驱动器中查找所述关键文件,判断查找到的关键文件是否满足所述关键文件对应的属性要求,如果不满足则继续查找。
9.如权利要求8所述自动创建编译环境的***,其特征在于,所述查找模块还用于,将查找到的所述关键文件的存在路径,保存到搜索结果文件中所述待编译目标单板对应的单板类型条目中。
10.如权利要求9所述自动创建编译环境的***,其特征在于,所述执行模块还用于在所述搜索结果文件中查找所述关键文件的存在路径,如果未查找到,则通过所述查找模块查找到所述关键文件的存在路径,如果查找到,则设置编译器的工作路径为查找到的关键文件存在路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100562291A CN101216776A (zh) | 2008-01-15 | 2008-01-15 | 一种自动创建编译环境的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100562291A CN101216776A (zh) | 2008-01-15 | 2008-01-15 | 一种自动创建编译环境的方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101216776A true CN101216776A (zh) | 2008-07-09 |
Family
ID=39623215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100562291A Pending CN101216776A (zh) | 2008-01-15 | 2008-01-15 | 一种自动创建编译环境的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101216776A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467464A (zh) * | 2010-11-11 | 2012-05-23 | 鸿富锦精密工业(深圳)有限公司 | 可移动存储设备盘符识别***及方法 |
CN106648597A (zh) * | 2016-10-10 | 2017-05-10 | 许继集团有限公司 | 一种多用户并发式远程编译引擎架构 |
US9921857B1 (en) | 2017-02-06 | 2018-03-20 | Red Hat Israel, Ltd. | Compiler extension for correcting error messages |
CN111209005A (zh) * | 2020-01-06 | 2020-05-29 | 腾讯科技(深圳)有限公司 | 程序文件的编译方法、装置和计算机可读存储介质 |
CN111596920A (zh) * | 2019-02-21 | 2020-08-28 | 迈普通信技术股份有限公司 | 文件编译方法、装置、编译设备及存储介质 |
CN112015428A (zh) * | 2020-08-21 | 2020-12-01 | 广州欢网科技有限责任公司 | 编译环境创建方法、装置及主机 |
CN115827056A (zh) * | 2023-02-01 | 2023-03-21 | 北京乐研科技股份有限公司 | 一种配置多种编译环境变换的方法 |
-
2008
- 2008-01-15 CN CNA2008100562291A patent/CN101216776A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467464A (zh) * | 2010-11-11 | 2012-05-23 | 鸿富锦精密工业(深圳)有限公司 | 可移动存储设备盘符识别***及方法 |
US8713243B2 (en) | 2010-11-11 | 2014-04-29 | Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd. | Removable storage device and method for identifying drive letter of the removable storage device |
CN106648597A (zh) * | 2016-10-10 | 2017-05-10 | 许继集团有限公司 | 一种多用户并发式远程编译引擎架构 |
US9921857B1 (en) | 2017-02-06 | 2018-03-20 | Red Hat Israel, Ltd. | Compiler extension for correcting error messages |
CN111596920A (zh) * | 2019-02-21 | 2020-08-28 | 迈普通信技术股份有限公司 | 文件编译方法、装置、编译设备及存储介质 |
CN111209005A (zh) * | 2020-01-06 | 2020-05-29 | 腾讯科技(深圳)有限公司 | 程序文件的编译方法、装置和计算机可读存储介质 |
CN111209005B (zh) * | 2020-01-06 | 2021-07-23 | 腾讯科技(深圳)有限公司 | 程序文件的编译方法、装置和计算机可读存储介质 |
CN112015428A (zh) * | 2020-08-21 | 2020-12-01 | 广州欢网科技有限责任公司 | 编译环境创建方法、装置及主机 |
CN115827056A (zh) * | 2023-02-01 | 2023-03-21 | 北京乐研科技股份有限公司 | 一种配置多种编译环境变换的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101216776A (zh) | 一种自动创建编译环境的方法及*** | |
EP4099152B1 (en) | Extending a virtual machine instruction set architecture | |
CN100377085C (zh) | 嵌入式操作***硬件镜像启动优化的实现方法 | |
CN101706734B (zh) | 二进制翻译中间接跳转指令的翻译方法及其*** | |
CN103268241A (zh) | 一种在bios中实现对硬盘分区隐藏或显示的方法 | |
CN102385527A (zh) | 一种提升业务脚本执行效率的装置及方法 | |
US7275242B2 (en) | System and method for optimizing a program | |
CN103902275B (zh) | 一种实现应用的语言版本切换的方法和*** | |
CN102346765A (zh) | 一种查询内存数据的方法及装置 | |
KR20040097937A (ko) | 오브젝트 기반의 파이프라인을 채용한 시스템 및 방법 | |
CN104794046A (zh) | 符号化程序运行日志的方法和*** | |
Chen et al. | Effective code discovery for ARM/Thumb mixed ISA binaries in a static binary translator | |
WO2019042322A1 (zh) | 一种翻译数据的管理方法、存储介质及电子设备 | |
CN1975701B (zh) | 主机驱动外设的方法及*** | |
CN108664238A (zh) | 一种解释型脚本语言c-sub的执行方法及装置 | |
CN102170428B (zh) | 一种异构虚拟机平台动态扩展管理方法 | |
CN112052047A (zh) | 一种指令处理方法、终端及存储介质 | |
WO2020258652A1 (zh) | 字符替换方法、***、计算机设备及计算机可读存储介质 | |
CN111913704A (zh) | 一种基于VSCode快速开发GSP7脚本的方法及插件工具 | |
CN102004633A (zh) | 一种处理控件属性的方法及装置 | |
CN101295239A (zh) | Java卡虚拟机的指令执行方法 | |
CN100416448C (zh) | 计算机***及其配置方法 | |
CN101876898A (zh) | 一种com组件的注册方法及装置 | |
JPH08123697A (ja) | エミュレーション高速化方式 | |
CN100395695C (zh) | 一种小型计算机***接口命令的处理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20080709 |