[发明专利]快速编译工程代码的方法在审

专利信息
申请号: 202211038837.6 申请日: 2022-08-29
公开(公告)号: CN115437640A 公开(公告)日: 2022-12-06
发明(设计)人: 朱进;杨凯;刘继明;金宁;刘松 申请(专利权)人: 网经科技(苏州)有限公司
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 江苏圣典律师事务所 32237 代理人: 王玉国
地址: 215021 江苏省苏州市工*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 快速 编译 工程 代码 方法
【权利要求书】:

1.快速编译工程代码的方法,其特征在于:对拥有多target的工程代码的Makefile文件解析提取出target和对应依赖,利用多线程并发编译多个target,包括以下步骤:

1)提取工程所有Makefile文件,解析出编译目标target和依赖目标,生成target依赖关系文件;

2)依据target依赖关系文件解析和计算出每个target的编译依赖深度;

3)依据计算的target编译依赖深度结果利用多线程并发编译多个target。

2.根据权利要求1所述的快速编译工程代码的方法,其特征在于:所述步骤1),target依赖文件格式定义如下:

targetA=空

targetB=空

targetC=targetA,targetB

targetA、targetB和targetC为工程待编译目标,targetA无依赖,targetB无依赖,targetC依赖targetA和targetB,故targetA和targetB是targetC的依赖,多个依赖以逗号分隔。

3.根据权利要求1所述的快速编译工程代码的方法,其特征在于:所述步骤2),依据target依赖关系文件解析和计算出每个target的编译依赖深度,步骤如下:

S21)依据target依赖文件解析出所有target进行保存,存储结构为Hash链表;

S22)依据target依赖文件解析出所有target的依赖进行保存,存储结构为字符串数组;

S23)target校验,剔除相同的target依赖记录;

S24)遍历步骤S21)中生成的Hash链表,若target对应的依赖为空,则依赖深度为1,若target有对应依赖,则依赖深度+1,将依赖当作target递归计算,得到最终依赖深度,相同依赖深度的target存储到同一链表,最终生成多条依赖深度不同的链表。

4.根据权利要求1或3所述的快速编译工程代码的方法,其特征在于:

步骤S21),依据target依赖文件解析出所有target进行保存,存储结构为Hash链表,4个target根据target名称按固定算法计算Hash的key值,targetA key值为0则存入list[0]链表,targetB和targetD key值为3则存入list[3]链表,targetC key值为10,则存入list[10]链表;

步骤S22),依据target依赖文件解析出所有target的依赖进行保存,存储结构为字符串数组;

步骤S23),target校验,剔除相同的target依赖记录,即在将target添加到p_key_list中时查找该target是否已存在于p_key_list中,若存在,则忽略;

步骤S24),遍历步骤S21)中生成的Hash链表,若target对应的依赖为空,则依赖深度为1,若target有对应依赖,则依赖深度+1,将依赖当作target递归计算,得到最终依赖深度,相同依赖深度的target存储到同一链表,最终生成多条依赖深度不同的链表,默认依赖深度为1,遍历p_key_list,计算targetA依赖深度,targetA依赖targetB,则依赖+1,继续查找targetB,targetB无依赖,则targetA的依赖深度为2,存入list[2]dnext链表;计算targetB依赖深度,targetB无依赖,则targetB依赖深度为1,存入list[1]dnext链表;计算targetC依赖深度,targetC无依赖,则targetC依赖深度为1,存入list[1]dnext链表;计算targetD依赖深度,targetD有多个依赖,则遍历所有依赖,首先依赖targetA,则依赖+1,继续查找targetA,targetA依赖targetB,则依赖+1,继续查找targetB,targetB无依赖,则targetD的目前依赖深度为3,然后依赖targetC,targetC无依赖,则targetD的目前依赖深度为2,取两次计算的targetD的依赖最大值,即3,存入list[3]dnext链表。

5.根据权利要求1所述的快速编译工程代码的方法,其特征在于:步骤3),依据计算的target编译依赖深度结果运用多线程技术并发编译多个target,步骤如下:

S31)遍历步骤S24)中生成的多条依赖深度不同的链表,按照依赖深度从小到大进行遍历,因待编译target在其所有依赖编译完成之后编译,按线程配置个数启动线程,每个线程步骤如下:

S311)若当前依赖深度链表不为空,则线程取当前未编译的target进行编译,并设置编译标记,编译完成则从当前链表删除target并退出,编译失败,则设置错误标记,通知其他线程退出,所有步骤结束;

S312)若当前依赖深度链表不为空同时依赖深度链表所有target未全部编译完成,则继续步骤S311);

S313)若当前依赖深度链表为空同时依赖深度链表所有target未全部编译完成,则线程直接退出;

S314)若当前依赖深度链表为空同时依赖深度链表所有target全部编译完成,继续步骤S32);

S32)选取下一条依赖深度的链表,继续步骤S31),若所有依赖深度的链表均编译完成,则编译完成,程序退出。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网经科技(苏州)有限公司,未经网经科技(苏州)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202211038837.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top