[发明专利]快速编译工程代码的方法在审
申请号: | 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),若所有依赖深度的链表均编译完成,则编译完成,程序退出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网经科技(苏州)有限公司,未经网经科技(苏州)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211038837.6/1.html,转载请声明来源钻瓜专利网。