一种编译链接方法及装置制造方法及图纸

技术编号:8215484 阅读:130 留言:0更新日期:2013-01-17 12:46
本发明专利技术实施例提供的一种编译链接方法及装置,涉及通信领域,能够通过增设保护区,以便当保护区被改写时,保护区能够隔离改写该保护区的目标文件,进而保障了其他模块的目标文件不被改写。该方法包括:获取至少两个模块的全局变量;分别编译至少两个模块的全局变量,生成与至少两个模块对应的至少两个目标文件;当链接至少两个目标文件时,在至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,保护区隔离改写保护区的目标文件。

【技术实现步骤摘要】

本专利技术涉及通信领域,尤其涉及一种编译链接方法及装置
技术介绍
在软件开发的过程中,为了利于软件的开发和维护,一个大型软件的功能被分成不同的模块。这些模块被单独进行开发,即把高级语言(如c,c++等)翻译为机器语言(根据处理器的不同会有不同的定义),然后生成目标文件,再通过链接器将各个模块的目标文件链接为一个可执行程序,其中,各个模块包括各个模块相应的全局变量及指令。 现有技术实现将各个模块的目标文件链接为一个可执行程序的方法是,直接将各个模块相应的全局变量的目标文件合并、相应的指令合并,以生成最终的可执行程序,例如,一个软件的功能被分为A、B两个模块,模块A包括模块A的全局变量及模块A的指令,模块B包括模块B的全局变量及模块B的指令,现有技术即是直接将模块A的全局变量的编译后的目标文件与模块B的全局变量的编译后的目标文件合并、将模块A的指令与模块B的指令合并,以生成最终的可执行程序。但是,采用现有技术链接成的可执行程序,在程序运行时,由于某些软件缺陷,会导致调用某个模块的数据产生越界操作而改写其他模块的数据的情况,例如,当模块A的目标文件被调用时,若产生越界操作,则可能修改了模块B的目标文件,这必然导致的结果是该可执行程序无法正常执行。
技术实现思路
本专利技术的实施例提供一种编译链接方法及装置,通过增设保护区,以便当保护区被改写时,保护区能够隔离改写该保护区的目标文件,进而保障了其他模块的目标文件不被改写。为达到上述目的,本专利技术的实施例采用如下技术方案本专利技术实施例提供一种编译链接方法,该方法包括获取至少两个模块的全局变量;分别编译所述至少两个模块的全局变量,生成与所述至少两个模块对应的至少两个目标文件;当链接所述至少两个目标文件时,在所述至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,所述保护区隔离改写所述保护区的目标文件。本专利技术实施例还提供一种编译链接装置,该装置包括编译器,用于在获取至少两个模块的全局变量后,分别编译所述至少两个模块的全局变量,生成与所述至少两个模块对应的至少两个目标文件,并将所述至少两个目标文件传输给链接器;链接器,用于在接收来自所述编译器的所述至少两个目标文件后,链接所述至少目标文件时,在所述至少两个目标文件后分别增设保护区,以使得当保护区被改写时,所述保护区隔离改写所述保护区的目标文件。本专利技术实施例所提供的编译链接的方法及装置,通过在获取至少两个模块的全局变量后,分别编译至少两个模块的全局变量,以生成与至少两个模块对应的至少两个目标文件,并且,当链接该至少两个目标文件时,在至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,保护区隔离改写保护区的目标文件。通过该方案,由于在各个模块的全局变量所编译后的目标文件后增设了保护区,因此在某些模块越界操作时,保护区能够及时隔离改写该保护区的目标文件,不但能够保障其他模块的目标文件不被改写也能够尽快排除故障。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附 图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本专利技术实施例提供的编译链接方法流程示意图一;图2为本专利技术实施例提供的编译链接方法流程示意图二 ;图3为本专利技术实施例提供的模块结构示意图一;图4为现有技术的模块结构示意图;图5为本专利技术实施例提供的模块结构示意图二;图6为本专利技术实施例提供的MMU、CPU与内存的连接示意图;图7为本专利技术实施例提供的编译链接装置结构示意图一;图8为本专利技术实施例提供的编译链接装置结构示意图二。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供一种编译链接方法,如图I所示,该方法包括SlOl、编译链接装置获取至少两个模块的全局变量。由于一个软件的功能被分为多个模块分别进行开发,因此编译链接装置若要将各个模块链接为一个可执行程序,首先需要获取各个模块的全局变量。这里,模块的全局变量是指作用于整个源程序的在函数外部定义的变量。S102、编译链接装置分别编译至少两个模块的全局变量,生成与至少两个模块对应的至少两个目标文件。在获取至少两个模块的全局变量后,编译链接装置会对该至少两个模块的全局变量进行编译,进而生成与至少两个模块对应的至少两个目标文件。这里的“编译”是指,把“高级语言”翻译为“机器语言”,其中,高级语言可以为C语言、C++语言等,机器语言则根据不同的要求有不同的定义,具体地,编译链接装置对该至少两个模块的全局变量进行编译的步骤可以由编译器来执行。S103、当链接至少两个目标文件时,编译链接装置在至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,保护区隔离改写保护区的目标文件。编译链接装置在编译至少两个模块的全局变量,生成至少两个目标文件后,编译链接装置会链接至少两个目标文件,链接时编译链接装置在至少两个目标文件后分别增设保护区。示例性的,编译链接装置在至少两个目标文件后分别增设保护区的方法可以为在至少两个目标文件的链接脚本后分别增加程序“林Protect = ;= ALIGN(4096)+4096”,其中,“ ”代表某一个模块的目标文件的名称,“ =ALIGN (4096) +4 096 ”代表保护区的结束地址,具体的编译链接的脚本后续实施例中会给出。由于在各个模块的目标文件后增设了保护区,因此当保护区被某个模块的目标文件的越界操作所改写时,保护区能够及时隔离该目标文件,以保护其他模块的数据免遭破坏。至此,编译链接装置将增设有保护区后的至少两个模块的目标文件合并,将至少两个模块的指令合并,生成可执行程序。本专利技术实施例提供的一种编译链接方法,通过在获取至少两个模块的全局变量后,分别编译至少两个模块的全局变量,以生成与至少两个模块对应的至少两个目标文件,并且,当链接该至少两个目标文件时,在至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,保护区隔离改写保护区的目标文件。通过该方案,由于在各个模块的全局变量所编译后的目标文件后增设了保护区,因此在某些模块越界操作时,保护区能够及时隔离改写该保护区的目标文件,不但能够保障其他模块的目标文件不被改写,也能够尽快排除故障。本专利技术实施例提供的一种编译链接方法,如图2所示,该方法包括S201、编译链接装置获取至少两个模块的全局变量。在将多个模块链接为一个可执行程序前,编译链接装置首先需要获取各个模块的全局变量。S202、编译链接装置分别编译至少两个模块的全局变量,生成与至少两个模块对应的至少两个目标文件。S203、当链接至少两个目标文件时,编译链接装置在至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,保护区隔离改写保护区的目标文件。结合步骤S202和步骤S203,对编本文档来自技高网...

【技术保护点】
一种编译链接方法,其特征在于,包括:获取至少两个模块的全局变量;分别编译所述至少两个模块的全局变量,生成与所述至少两个模块对应的至少两个目标文件;当链接所述至少两个目标文件时,在所述至少两个目标文件后分别增设保护区,进而生成可执行程序,以使得当保护区被改写时,所述保护区隔离改写所述保护区的目标文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:支雷磊
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1