在同一台host机器下实现多套平台共存编译的方法

文档序号:6331946阅读:140来源:国知局
专利名称:在同一台host机器下实现多套平台共存编译的方法
技术领域
本发明涉及交叉编译技术,特别是涉及一种交叉编译的处理方法,利用脚本技术来处理不同软件平台进行build工作的冲突问题,适用于手机以及其他嵌入式交叉编译类软件平台的build工作。
背景技术
目前无论是手机软件平台方案还是其他类似的嵌入式软件平台方案都需要利用 PC(即host机器,宿主机)来进行交叉编译,以最终生成target机器(目标机)上的目标镜像文件。而且随着软件平台方案的复杂度上升,生成目标镜像文件已经不是build(建立)系统的全部工作了,一些复杂的build系统还会处理一些中间生成物,以及辅助工具等等。这就意味着,build系统所涉及的软件环境以及依赖的辅助工具越来越庞大,越来越复杂。在这种情况下,如果在同一台host机器上需要编译两套或更多的软件平台的时候,很大程度会遇到辅助工具冲突,或者同一辅助工具版本冲突的问题。比如需要make工具的不同版本,需要同一编译器的不同版本,同名但是作用不同的辅助工具,甚至于需要cygwin 等模拟imix环境等等。遇到这种情况,大多数处理办法就是每台host机器仅build —种软件平台,或者使用虚拟机技术,让每个虚拟机build —种软件平台。事实上,无论上述哪种方案都会对硬件资源造成浪费,而且使用起来也不方便,效率也不高,会对平台使用者造成诸多不便。

发明内容
本发明要解决的技术问题是为了克服现有技术上述的对硬件资源造成浪费、使用不便等缺陷,提供一种利用脚本技术实现的在同一台host机器下实现多套平台共存编译的方法。本发明是通过下述技术方案来解决上述技术问题的一种在同一台host机器下实现多套平台共存编译的方法,其特点在于,其包括以下步骤S1、选定脚本语言类型;S2、收集每个交叉编译软件平台所需要的依赖环境;&、编写脚本处理每一个交叉编译软件平台所需要的依赖环境。较佳地,步骤&进一步包括以下步骤S31、将不同交叉编译软件平台的名字作为参数传递到脚本中;S32、设置PATH环境变量,将交叉编译软件平台所需要的所有依赖工具的路径都添加到PATH环境变量中,设置不同依赖工具所需要的各自的环境变量;S33、在脚本中正常调用交叉编译软件平台本身的build入口。较佳地,步骤&中,选定脚本语言类型时,根据host机器的操作系统类型或者交叉编译软件平台实际依赖的操作系统类型而定。
较佳地,所述的依赖环境包括每个交叉编译软件平台所需要的工具、工具版本和工具路径信息。本发明的积极进步效果在于本发明因为采用了脚本技术,而脚本语言更灵活,开发效率高,而且在本方法中仅仅做为入口使用,所以基本上不会影响具体软件平台的buiId 执行效率。从而不会对硬件资源造成浪费,而且使用起来方便,效率也大大提高。


图1为本发明的脚本使用过程图。图2为本发明的build工作的总体流程图。图3为本发明的脚本具体的处理过程详细流程图。
具体实施例方式下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
本发明的具体方法介绍如下。1、选定所采用的脚本语言类型,一般情况下,脚本语言类型要视具体host操作系统而定,比如host操作系统为windows系统时,就使用批处理脚本语言,Iinux系统时,就使用shell脚本语言。但也有例外,比如在windows操作系统上,用户采用了虚拟机,这时具体的交叉编译软件平台也视其实际依赖的环境为定,也即看虚拟机上的操作系统而定。总之本步骤的一般规则就是,交叉编译软件平台选择哪种脚本语言,本方法就选用哪种脚本
^五本发明之所以采用脚本技术,其关键就是脚本技术在处理这种问题上具备先天优势。1、因为host机器上的操作系统是多样性的,一旦选择了操作系统,就会确定使用哪种脚本语言,每种操作系统都具备最合适脚本语言,比如windows下的批处理脚本语言, imix/linux下的shell脚本语言等等。2、因为脚本语言更灵活,开发效率高,而且此方法仅仅做为入口使用,基本上不会影响具体软件平台的build执行效率。3、绝大多数交叉编译系统都会使用脚本做为平台的build入口,所以使用脚本语言和平台本身的build入口不会产生冲突,就像平台build入口的一部分。2、收集每个交叉编译软件平台所需要的依赖环境,包括每个具体的交叉编译软件平台所需要的工具、工具的版本和工具的路径等信息。比如需要的工具有make工具,版本 3. 8,路径在C盘等信息,因为此处工具有很多种类,在此不一一列举。本步骤中的收集工作并不复杂,因为对于每个交叉编译软件平台来说,所需要的依赖环境都会详细描述,因为即使仅安装一个软件平台也会做这些工作的,否则也无法进行正常build工作。3、编写脚本处理每一个交叉编译软件平台所需要的依赖环境。这个步骤的核心思想就是根据不同的软件平台(即交叉编译软件平台,下同),构造出适合不同软件平台所需要的环境,并将具体软件平台的原本的build入口做为新编写的这个脚本的子进程来调用,这样不同的软件平台就好像都在自己专属的环境进行工作一样。具体编写步骤如下
3. 1首先将不同软件平台的名字作为参数传递到脚本中,以便于分别处理。因具体脚本的编程技术为本领域技术人员的常用公知技术,在此就不作赘述如何进行编写,本领域技术人员可以使用具体脚本语言的分支语句来实现此功能。3. 2具体构造适合于每个软件平台的依赖环境。更具体的步骤如下。3. 2. 1设置PATH环境变量,将所有要build的软件平台所需要的依赖工具的路径都添加到PATH环境变量中,不需要的依赖工具的路径都去掉。这里的PATH环境变量为每个操作系统都带有的,为本领域的公知术语,不作更多解释。由此,依赖工具的路径找到了, 则具体的依赖工具的名字和版本号就唯一的确定了,所以就不会出现同一个工具的不同版本找错的问题。3. 2. 2设置具体的软件平台所需要的特定的环境变量。因为同一工具的不同版本, 可能环境变量也不尽相同,比如gcc编译器就需要找到gccinc头文件,gccbin可执行文件以及gcclib库文件。有了这一步的设置,就不会出现工具找错环境变量的问题。3. 2. 3但是在实际应用中,某些平台的build脚本中,有可能会直接出现某些依赖工具的绝对路径名,在应用本发明时这种情况应该要尽量避免,否则3. 2. 1和3. 2. 2的工作就会浪费掉。应用本发明一定要使用环境变量的方式,避免使用绝对路径名。不过这种情况即使发生也可以修改,毕竟如果平台build脚本中出现绝对路径名的话,工程师会经常改动的,具体位置也会很熟悉.3. 3最后,在脚本中正常调用平台本身的build入口,进行后续编译工作,后续编译工作均为本领域的惯用技术手段,不再赘述。以上介绍了本发明的原理部分,现在结合附图对本发明在具体操作中的实施过程进行说明,以方便更加形象直观的理解本发明的方案和效果。如图1所示,本发明的脚本使用起来非常简单,就像正常调用软件平台编译脚本一样,只要简单的传递进去所要build的软件平台的名字即可。如图2所示,是此脚本的使用说明流程,根据不同的平台参数,建立不同的平台。 如果需要看此脚本的用法,不敲参数即可。如果想build相应工程,输入相应工程名字即可。如图3所示,是在建立平台时,脚本的具体处理流程图。步骤101,脚本参数处理部分,供最终用户使用。步骤102,具体平台的依赖环境处理部分,处理PATH环境变量,处理特殊环境变量 (即找到特定平台本身所需的环境变量,或者具体编译工具所需的环境变量),处理特殊工具对应的路径名(比如平台本身做特殊的建立工作时自己生成的工具)等等。步骤103,调用相应软件平台的build入口部分,最后脚本结束。因后续编译操作均为本领域常用的操作,在此不做赘述。虽然以上描述了本发明的具体实施方式
,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
权利要求
1.一种在同一台host机器下实现多套平台共存编译的方法,其特征在于,其包括以下步骤51、选定脚本语言类型;52、收集每个交叉编译软件平台所需要的依赖环境;&、编写脚本处理每一个交叉编译软件平台所需要的依赖环境。
2.如权利要求1所述的在同一台host机器下实现多套平台共存编译的方法,其特征在于,步骤&进一步包括以下步骤531、将不同交叉编译软件平台的名字作为参数传递到脚本中;532、设置PATH环境变量,将交叉编译软件平台所需要的所有依赖工具的路径都添加到 PATH环境变量中,设置不同依赖工具所需要的各自的环境变量;533、在脚本中正常调用交叉编译软件平台本身的build入口。
3.如权利要求1所述的在同一台host机器下实现多套平台共存编译的方法,其特征在于,步骤&中,选定脚本语言类型时,根据host机器的操作系统类型或者交叉编译软件平台实际依赖的操作系统类型而定。
4.如权利要求1所述的在同一台host机器下实现多套平台共存编译的方法,其特征在于,所述的依赖环境包括每个交叉编译软件平台所需要的工具、工具版本和工具路径信息。
全文摘要
本发明公开了一种在同一台host机器下实现多套平台共存编译的方法,其包括以下步骤S1、选定脚本语言类型;S2、收集每个交叉编译软件平台所需要的依赖环境;S3、编写脚本处理每一个交叉编译软件平台所需要的依赖环境。本发明因为采用了脚本技术,而脚本语言更灵活,开发效率高,而且在本方法中仅仅做为入口使用,所以基本上不会影响具体软件平台的build执行效率。从而不会对硬件资源造成浪费,而且使用起来方便,效率也大大提高。
文档编号G06F9/44GK102402428SQ20101028021
公开日2012年4月4日 申请日期2010年9月14日 优先权日2010年9月14日
发明者杨春敏 申请人:基信康信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1