一种编译程序的方法及装置制造方法及图纸

技术编号:4248938 阅读:229 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种编译程序的方法及装置,其中,所述方法包括:读入用户输入的环境参数,配置环境参数变量;调用相关的shell脚本工具,生成编译规则临时文件;引用所述编译规则临时文件,调用相应的编译器对程序进行编译。通过本发明专利技术,能够方便、快捷地完成编译,并且易于维护和移植,能够提高编译速度。

【技术实现步骤摘要】

本专利技术涉及编译
,特别是涉及一种编译程序的方法及装置
技术介绍
通常,在编写好程序代码之后,在Windows下使用IDE(IntegratedDevelop Environment,集成开发环境)工具对编写完成的代码进行编译时,大多数IDE会自动生成 Makefile文件,因此,程序员通常不需要关注如何写Makefile文件,只需要将代码编写好 后,运行IDE工具提供的编译,IDE工具会自动生成Makefile文件,进行编译,得到最终结果。 但是,在li皿x下编程时,程序员就不得不直接面对Makefile文件了。例如,对于 一个简单的程序,只含有main.c,程序员编译时可以直接用gcc编译器,使用gcc-o test main, c命令即可得到最终可执行文件test。但是如果工程里面包含了大量的源文件,以及 依赖模块,则直接使用gcc输入命令显然是不合适的,所以,make工具解决了这个问题,该 工具通过读入符合Makefile规则的文件(默认文件名为Makefile或makefile,也可以通 过make_f ***来使用非标准文件名的Makefile文件),来推导各个源文件的依赖关系,调 用相应的编译指令来生成最终目标。 对于一个源文件较少的工程,直接按照Makefile规则编写一个Makefile文件 不是很难的一件事情,但是对于一个包含了大量的源文件,且依赖的模块有很多的工程, 写一个正确的Makefile文件就不是一件容易的事情了,对每一个工程都要写一个正确的 Makefile文件,常常需要耗费程序员很大的精力,并且容易出错,不便于维护及移植。
技术实现思路
本专利技术提供一种编译程序的方法及装置,能够提高程序编译的效率。 为实现上述目的,本专利技术提供了如下方案 —种编译程序的方法,包括 读入用户输入的环境参数,配置环境参数变量; 调用相关的shell脚本工具,生成编译规则临时文件; 引用所述编译规则临时文件,调用相应的编译器对程序进行编译。 优选的,还包括 调用相关的shell脚本工具,从预先保存的文件中获取依赖模块的相关信息,将 所述相关信息加入主模块的相关参数中。 优选的,当所述依赖模块为静态库模块时,所述依赖模块的相关信息包括所述依 赖模块本身。 优选的,当所述依赖模块为动态库模块时,所述依赖模块的相关信息包括所述依 赖模块所在的路径或者名称。 优选的,还包括 读入所述依赖模块的环境参数,编译所述依赖模块,并生成本次编译过程的缓存 文件。 优选的,还包括 判断依赖模块是否已经保存在缓存文件中,如果是,跳过编译所述依赖模块的步 骤。—种编译程序的装置,包括 读入单元,用于读入用户输入的环境参数,配置环境参数变量; 生成单元,用于调用相关的shell脚本工具,生成编译规则临时文件; 编译单元,用于引用所述编译规则临时文件,调用相应的编译器对程序进行编译。 优选的,还包括 依赖模块获取单元,用于调用相关的shell脚本工具,从预先保存的文件中获取 依赖模块的相关信息,将所述相关信息加入主模块的相关参数中。 优选的,当所述依赖模块为静态库模块时,所述依赖模块的相关信息包括所述依 赖模块本身。 优选的,当所述依赖模块为动态库模块时,所述依赖模块的相关信息包括所述依 赖模块所在的路径或者名称。 优选的,还包括 缓存单元,用于读入所述依赖模块的环境参数,编译所述依赖模块,并生成本次编译过程的缓存文件。 优选的,还包括 判断单元,用于判断依赖模块是否已经保存在缓存文件中,如果是,跳过编译所述 依赖模块的步骤。根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果 本专利技术能够通过读入用户输入的环境参数,配置环境参数变量;调用相关的 shell脚本工具,生成编译规则临时文件;引用所述编译规则临时文件,调用相应的编译器 对程序进行编译。因此,通过本专利技术,用户无须手动编写Makefile文件,只需要输入环境参 数,就可以调用本专利技术提供的shell脚本工具,生成编译规则临时文件,然后完成实现编译 过程。因此,能够方便、快捷地完成编译,并且易于维护和移植,能够提高编译速度。 此外,在进行跨平台或交叉编译时,只需要指定平台参数即可,而不需要专门针对 某个平台编写不同的Makefile文件。 最后,主模块和依赖模块可以同时编译,方便于同时开发主模块和依赖模块的情 况。附图说明 为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施 例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图 获得其他的附图。图1是本专利技术实施例提供的方法的流程4 图2是本专利技术实施例提供的装置的示意图。 具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于 本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本专利技术保护的范围。参见图l,本专利技术实施例提供的编译程序的方法包括以下步骤 S101 :读入用户输入的环境参数,配置环境参数变量; S102 :调用相关的shell脚本工具,生成编译规则临时文件; S103 :引用所述编译规则临时文件,调用相应的编译器对程序进行编译。 为了实现上述技术方案,本专利技术实施例提供了 Makefile模板以及一系列的shell脚本工具。其中,shell脚本工具可以组成.rules文件,保存在与各工程的同级或上级目录中,以便各工程都可以调用.rules文件中的Shell脚本工具。 用户仅需填写Makefile模板中所需的环境参数,然后点击make,本专利技术实施例提 供的编译工具就可以调用rules, gcc这一 shell脚本工具,读入用户编译时输入的参数,来 配置相关参数变量,调用相应的shell脚本工具,来生成编译规则文件进行编译,生成最终目标,即整个过程中,无须生成通常意义上的Makefile文件,make之前,也不需要首先经过 自动生成Makefile文件等操作。 其中,Makefile模板主要是提供给用户,由用户填写一些环境参数,其中,环境参 数可以包括 A)平台名称PLATFORM ifeq ($ (PLATFORM),) PLATFORM = i 386-1 i皿x Endif 即,如果make时没有指定PLATFORM,则默认是i386-li皿x类型 B)输出类型及名称 #MAKE_STATIC_LIB := 1 #MAKE_SHARED_LIB : = 1 EXECUTABLE := 即,如果输出时静态库,则MAKE_STATIC_LIB : = 1 ,如果是动态库,则MAKE_ SHARED_LIB : = 1 否则是可执行文件。目标名称为EXECUTABLE值。其中,MAKE—STATICJJB和MAKE_SHARED_LIB 二者最多只能设定一个,可执行文件不能设定这两个选项的任何一个。 EXECUTABLE :=最终目标文件名。 C)头文件路径 INCLUDE—PATH :本文档来自技高网
...

【技术保护点】
一种编译程序的方法,其特征在于,包括:    读入用户输入的环境参数,配置环境参数变量;    调用相关的shell脚本工具,生成编译规则临时文件;    引用所述编译规则临时文件,调用相应的编译器对程序进行编译。

【技术特征摘要】
一种编译程序的方法,其特征在于,包括读入用户输入的环境参数,配置环境参数变量;调用相关的shell脚本工具,生成编译规则临时文件;引用所述编译规则临时文件,调用相应的编译器对程序进行编译。2. 根据权利要求l所述的方法,其特征在于,还包括调用相关的shell脚本工具,从预先保存的文件中获取依赖模块的相关信息,将所述 相关信息加入主模块的相关参数中。3. 根据权利要求2所述的方法,其特征在于,当所述依赖模块为静态库模块时,所述依 赖模块的相关信息包括所述依赖模块本身。4. 根据权利要求2所述的方法,其特征在于,当所述依赖模块为动态库模块时,所述依 赖模块的相关信息包括所述依赖模块所在的路径或者名称。5. 根据权利要求2所述的方法,其特征在于,还包括读入所述依赖模块的环境参数,编译所述依赖模块,并生成本次编译过程的缓存文件。6. 根据权利要求5所述的方法,其特征在于,还包括判断依赖模块是否已经保存在缓存文件中,如果是,跳过编译所述依赖模块的步骤。7. —种编译程序的装置,其特征在于,包括读入单元,用...

【专利技术属性】
技术研发人员:田海燕郭军
申请(专利权)人:北京东方网力科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1