[发明专利]一种C++程序编译方法和装置有效
申请号: | 201811569117.6 | 申请日: | 2018-12-21 |
公开(公告)号: | CN109614106B | 公开(公告)日: | 2022-04-19 |
发明(设计)人: | 郭凯 | 申请(专利权)人: | 北京龙创悦动网络科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京鼎真知识产权代理事务所(普通合伙) 11815 | 代理人: | 洪波 |
地址: | 100088 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 c++ 程序 编译 方法 装置 | ||
本发明提供一种C++程序编译方法,该方法包括获取多个cpp文件,并对所述多个cpp文件进行合并算法处理,生成待编译的目标cpp文件,最后对所述目标cpp文件进行编译。该方法避免在对大量的cpp文件编译时,需要对每一个cpp文件都进行单独的预处理、编译、汇编和产生目标链接的编译过程,直接对合并后的cpp文件进行统一的编译,节省了各种系统资源以及大量的时间开销和系统开销,加速了C++程序的编译进程,提高了系统的性能。
技术领域
本发明涉及计算机技术领域,特别是涉及一种C++程序编译方法和装置。
背景技术
编译C++文件通常使用编译器,比如采用clang,gcc等C++编译器对其进行编译。在编译多个C++文件时,比如2000多个甚至更多个文件时,现有编译器是对C++文件逐个编译,这样会消耗大量的时间。C++编译器在编译文件的时候,每编译一个文件就会启动一个进程,加载各种系统资源会产生大量的时间开销和系统开销。
目前,对大量的C++文件进行编译,主要使用分布式编译技术,把C++文件发送到不同的机器进行编译,最后返回结果集成。这种方式需要第三方分布式软件的支持,并消耗大量的硬件环境,比如编译2000多个文件,至少需要10台机器,才能提高编译速度。
因此,在尽量节约硬件编译环境和编译时间开销的前提下,提高C++文件的编译速度是目前急需解决的技术问题。
发明内容
为了提高C++文件的编译速度,本发明提供了一种C++程序编译加速方法,以解决在尽量节约硬件编译环境和编译时间开销的前提下,提高C++文件编译速度的问题。该方法通过采用合并编译方式,将大量C++文件合并成一个文件,再对合并后的文件进行编译,这样就只需要加载一次系统资源,对C++文件进行集中编译,可极大的缩短编译时间。
该方法的具体技术方案如下:
一种C++程序编译方法,其特征在于,所述方法包括如下步骤:
获取多个cpp文件;
对所述多个cpp文件进行合并算法处理,生成待编译的目标cpp文件;
对所述目标cpp文件进行编译。
进一步地,对所述cpp文件进行合并算法处理,生成待编译的目标cpp文件之前,包括如下步骤:
将每个所述cpp文件生成抽象语法树;
判断所述抽象语法树之间是否包括相同的内部变量和/或函数。
进一步地,若所述抽象语法树之间不包括相同的内部变量和/或函数,则对所述多个cpp文件进行合并算法处理,生成待编译的目标cpp文件。
进一步地,所述方法还包括,
若所述抽象语法树之间包括相同的内部变量和/或函数,则生成错误信息;
对所述错误信息进行修改;
其中,所述错误信息包括具有相同内部变量和/或函数的抽象对象树所对应的文件的文件名、内部变量名和/或函数名、所述内部变量名和/或函数名所在文件的行数。
进一步地,所述合并算法处理包括如下步骤:
采用include伪指令调用所述cpp文件;
将调用的所述cpp文件添加至预先设置的cpp文件,生成待编译的目标cpp文件。
进一步地,判断所述抽象语法树之间是否包括相同的内部变量和/或函数,具体包括如下步骤:
获取抽象语法树的节点信息;
遍历所述节点信息并判断其是否满足预设的判断条件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京龙创悦动网络科技有限公司,未经北京龙创悦动网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811569117.6/2.html,转载请声明来源钻瓜专利网。