用于处理源文件的方法和装置制造方法及图纸

技术编号:12889845 阅读:113 留言:0更新日期:2016-02-17 23:41
本发明专利技术涉及用于处理源文件的方法和装置。提供了一种用于处理源文件以生成目标文件的方法,包括:获取由源文件所引用的头文件;响应于源文件调用在头文件中定义的数据符号,创建数据符号的定义的指示符,不同数据符号的定义对应于不同的指示符;向编译源文件所得的编译结果添加指示符以生成目标文件。还提供了一种用于处理源文件的方法,包括:响应于源文件所引用的头文件被更新,在头文件中查找由源文件调用的数据符号的定义;创建数据符号的定义的指示符;响应于指示符匹配于从源文件生成的目标文件中的指示符,通知无需重新编译源文件。采用本发明专利技术,可以记录源文件和头文件之间的依赖关系,并基于依赖关系来降低需要重新编译的源文件的数量。

【技术实现步骤摘要】

本专利技术的各实施方式涉及编译(compiling)领域,更具体地,涉及处理源文件 (source file)以生成目标文件(object file)的方法和装置。
技术介绍
随着计算机技术的发展,目前已经出现了大量的编程语言。并且,目前的很多编程 语言的源代码(source code)涉及多种类型的文件格式,例如,对于C语言而言,源代码可 以包括源文件(例如,*· c文件)和头文件(header file)(例如,*· h文件);又例如,对于 C++语言而言,源代码可以包括源文件(例如,*. cpp文件)和头文件(例如,*. h和*. hpp 文件)。 通常而言,源文件可以用于保存程序的具体实现(例如,主体代码部分),而头文 件可以保存程序的接口(例如,数据结构和函数的定义等)。源文件可以引用(reference) 头文件,例如在C和C++中可以通过"#include"来引用头文件。具体而言,一个源文件可 以引用多个头文件,而一个头文件可以被多个源文件引用。因而,在源文件和头文件之间可 以存在多对多的复杂引用关系。 开发人员通常会在一个源文件中引用多个头文件(有时可能会引用该源文件实 际上不需要的头文件),此时,当多个头文件中的任一头文件被更新时(即使被更新的头文 件与源文件完全无关),都需要重新编译该源文件。 应当注意,编译源文件涉及大量处理步骤:例如前端(front-end)处理可以包括 词法分析、语法分析、语义分析、中间代码生成等,而后端(back-end)处理涉及代码优化和 目标代码(object code)生成等。因而,仅仅编译一个源文件就可能耗费大量时间。 另一方面,随着用户需求的复杂化,单独的编程人员已经很难完成应用程序的开 发。每个编程人员可能会开发数十甚至更多的源文件,并且每个源文件还可能会引用一个 或者多个头文件。此时,重新编译全部源代码可能会需要数十分钟甚至更长的时间。基于 上述问题,如何降低编译源代码所需的时间并提高编译效率,成为一项亟待解决的问题。
技术实现思路
因而,期望开发出能够降低需要被编译的源代码的数量、进而降低编译源代码所 需的时间的技术方案;并且期望可以在尽量不改变现有的编译方案的情况下实现期望该技 术方案。 在本专利技术的一个实施方式中,提供了一种用于处理源文件以生成目标文件的方 法,包括:获取由源文件所引用的头文件;响应于源文件调用在头文件中定义的数据符号 (data symbol),创建数据符号的定义的指示符,其中不同数据符号的定义对应于不同的指 示符;以及向编译源文件所得的编译结果添加指示符以生成目标文件。 在本专利技术的一个实施方式中,提供了一种用于处理源文件的方法,包括:响应于源 文件所引用的头文件被更新,在头文件中查找由源文件调用的数据符号的定义;创建数据 符号的定义的第一指示符;以及响应于第一指示符匹配于从源文件生成的目标文件中的指 示符,通知无需重新编译源文件,其中目标文件是根据本专利技术的方法生成的。 在本专利技术的一个实施方式中,提供了一种用于处理源文件以生成目标文件的装 置,包括:获取模块,配置用于获取由源文件所引用的头文件;创建模块,配置用于响应于 源文件调用在头文件中定义的数据符号,创建数据符号的定义的指示符,其中不同数据符 号的定义对应于不同的指示符;及生成模块,配置用于向编译源文件所得的编译结果添加 指示符以生成目标文件。 在本专利技术的一个实施方式中,提供了一种用于处理源文件的装置,包括:查找模 块,配置用于响应于源文件所引用的头文件被更新,在头文件中查找由源文件调用的数据 符号的定义;创建模块,配置用于创建数据符号的定义的第一指示符;以及通知模块,配置 用于响应于第一指示符匹配于从源文件生成的目标文件中的指示符,通知无需重新编译源 文件,其中目标文件是根据本专利技术的装置生成的。 采用本专利技术所述的方法和装置,可以在从源文件生成的目标代码中记录该源文件 所调用的数据符号的定义的指示符。进一步,可以基于该指示符来判断头文件中被更新的 部分对于源文件是否有影响,并且在有影响的情况下重新编译源文件,而在没有影响的情 况下不必重新编译源文件。以此方式,可以大大减少将被编译的源代码的数量,进而降低编 译时间。【附图说明】 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其 他目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号 通常代表相同部件。 图1示意性示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12 的框图; 图2示意性示出了根据一个技术方案的源文件和头文件之间的引用关系的框图; 图3示意性示出了根据本专利技术一个实施方式的处理源文件的技术方案的框图; 图4A示意性示出了根据本专利技术一个实施方式的处理源文件以生成目标文件的方 法的流程图,以及图4B示意性示出了根据本专利技术一个实施方式的处理源文件的方法的流 程图; 图5示意性示出了根据本专利技术一个实施方式的处理源文件以生成目标文件的框 图; 图6示意性示出了根据本专利技术一个实施方式的处理源文件的框图;以及 图7A示意性示出了根据本专利技术一个实施方式的处理源文件以生成目标文件的装 置的框图,以及图7B示意性示出了根据本专利技术一个实施方式的处理源文件装置的框图。【具体实施方式】 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方 式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。 图1示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框 图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本专利技术实施方式的功能和 使用范围带来任何限制。 如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统 /服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器 28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器, 外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举 例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。 计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是 任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动 的和不可移动的介质。 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存 取存储器(RAM) 30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其 他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34 可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为"硬盘驱动器")。尽管 图1中未示出,可以提供用于对可移动非易失性磁盘(例如"软盘")读写的磁盘本文档来自技高网
...

【技术保护点】
一种用于处理源文件以生成目标文件的方法,包括:获取由所述源文件所引用的头文件;响应于所述源文件调用在所述头文件中定义的数据符号,创建所述数据符号的定义的指示符,其中不同数据符号的定义对应于不同的指示符;以及向编译所述源文件所得的编译结果添加所述指示符以生成所述目标文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:毛一赠张青山纪金松刘严
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

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

1