一种嵌入式程序运行符号表的生成方法及装置的制造方法

文档序号:9921842阅读:510来源:国知局
一种嵌入式程序运行符号表的生成方法及装置的制造方法
【技术领域】
[0001] 本发明涉及嵌入式软件应用领域,尤其涉及一种嵌入式程序运行符号表的生成方 法及装置。
【背景技术】
[0002] 随着网络系统复杂度的增加,网络系统中设备的现场可调试能力越显重要,而符 号表是设备现场调试的重要技术。通过嵌入式程序运行符号表信息,调试人员可以通过名 称进行函数调用操作、查看全局变量的信息、打印进程的调用栈等信息,从而获取设备的运 行状态,进而能让调试人员更快的定位设备出现问题的原因。
[0003] 由上述描述,在设备的调试过程中,嵌入式程序运行符号表的作用是显著的,这就 需要生成一个嵌入式程序运行符号表。目前,通过二次链接的方法进行嵌入式程序运行符 号表的生成,在具体的执行过程中,需要构造一个空符号表源文件,并将其编译为空符号表 目标文件,将嵌入式操作系统中预先编译好的目标文件与空符号表目标文件进行第一次链 接,得到第一链接目标文件,对该第一链接目标文件进行分析,得到符号表源文件,进一步 将该符号表源文件转换为符号表目标文件,最后对符号表目标文件和嵌入式操作系统中预 先编译好的目标文件进行第二次链接,最终生成嵌入式程序运行符号表。
[0004] 在实际应用过程中,发明人发现现有嵌入式程序运行符号表的生成过程中,必须 要采用二次链接,这就增加了编译的时间,而当前的嵌入式系统越来越庞大,这样最后的链 接时间占总的编译链接时间很大比例,增加一次链接所占用的时间比较长,导致嵌入式程 序运行符号表的生成效率低。

【发明内容】

[0005] 本发明的实施例提供一种嵌入式程序运行符号表的生成方法及装置,在嵌入式程 序运行符号表的生成过程中,缓解了采用二次链接导致的符号表生成效率低的问题。
[0006] 为达到上述目的,本发明的实施例采用如下技术方案:
[0007] -种嵌入式程序运行符号表的生成方法,所述方法包括:
[0008] 从嵌入式目标文件中获取符号信息,所述符号信息至少包括:符号在所在段的相 对地址、符号名称、段名称;
[0009] 根据所述符号信息生成符号表源文件;
[0010] 将所述符号表源文件编译为符号表目标文件;
[0011] 对所述嵌入式程序目标文件和所述符号表目标文件进行链接,生成嵌入式程序运 行符号表。
[0012] 一种嵌入式程序运行符号表的生成装置,所述装置包括:
[0013] 获取单元,用于从嵌入式目标文件中获取符号信息,所述符号信息至少包括:符号 在所在段的相对地址、符号名称、段名称;
[0014] 文件生成单元,用于根据所述获取单元获取的所述符号信息生成符号表源文件; 并将所述符号表源文件编译为符号表目标文件;
[0015] 链接单元,用于对所述嵌入式程序目标文件和所述文件生成单元生成的所述符号 表目标文件进行链接,生成嵌入式程序运行符号表。
[0016] 本发明实施例提供的一种嵌入式程序运行符号表的生成方法及装置,从嵌入式目 标文件中获取符号信息,并根据符号信息生成符号表源文件,进而将这一符号表源文件编 译为符号表目标文件,再对嵌入式程序目标文件和符号表目标文件进行链接,生成嵌入式 程序运行符号表。与现有技术嵌入式程序运行符号表的生成过程中,必须采用二次链接的 方法相比,本发明实施例只需要进行一次链接就生成嵌入式程序运行符号表,缓解了符号 表生成效率低的问题。
【附图说明】
[0017] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0018] 图1为本发明一实施例提供的一种生成嵌入式程序运行符号表的方法流程图;
[0019] 图2为本发明另一实施例提供的一种生成嵌入式程序运行符号表的方法流程图;
[0020] 图3为本发明另一实施例提供的一种基于具体实例生成嵌入式程序运行符号表 的方法流程图;
[0021] 图4为本发明另一实施例提供的一种嵌入式程序运行符号表生成装置的结构组 成示意图;
[0022] 图5为本发明另一实施例提供的另一种嵌入式程序运行符号表生成装置的结构 组成示意图。
【具体实施方式】
[0023] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0024] 本发明一实施例提供了一种嵌入式程序运行符号表的生成方法,且这一方法在嵌 入式操作系统中应用执行,如图1所示,该方法包括:
[0025] 101、从嵌入式目标文件中获取符号信息。
[0026] 其中,符号信息至少包括:符号在所在段的相对地址、符号名称、段名称。
[0027] 值得说明的是,符号存在于一个段内,在未建立链接时,该段的起始地址为0,则获 取的符号在该段内的地址为:符号在所在段的相对地址。
[0028] 102、根据符号信息生成符号表源文件。
[0029] 103、将符号表源文件编译为符号表目标文件。
[0030] 104、对嵌入式程序目标文件和符号表目标文件进行链接,生成嵌入式程序运行符 号表。
[0031] 本发明实施例提供的一种嵌入式程序运行符号表的生成方法,从嵌入式目标文件 中获取符号信息,并根据符号信息生成符号表源文件,进而将这一符号表源文件编译为符 号表目标文件,再对嵌入式程序目标文件和符号表目标文件进行链接,生成嵌入式程序运 行符号表。与现有技术嵌入式程序运行符号表的生成过程中,必须采用二次链接的方法相 t匕,本发明实施例只需要进行一次链接就生成嵌入式程序运行符号表,缓解了符号表生成 效率低的问题。
[0032] 本发明另一实施例提供了一种嵌入式程序运行符号表的生成方法,在本实施例中 就如何根据符号信息生成符号表源文件进行了详细说明,也就是针对上述步骤102作了具 体说明,该步骤102具体包括如下两个执行步骤:
[0033] 第一步:通过符号信息获取符号表信息。
[0034] 值得说明的是,结合上述步骤101的描述,在获取到符号信息之后,通过符号信息 生成符号表,在符号表中至少包括:符号名称、符号地址、段名称三种信息,当然在该符号表 中还可以包括:符号大小、符号类型。在符号表中的符号地址为:符号在所在段的相对地址 +段起始地址的变量,且段起始地址的变量在链接时赋值,也就是该段起始地址的变量在链 接时根据代码多少等动态赋值。
[0035] 第二步:通过符号表信息生成符号表源文件。
[0036] 值得说明的是,结合上述如图1所示的方法流程,在执行步骤104之前,该方法还 包括:
[0037] a、构造链接脚本。
[0038] 其中,链接脚本包括段起始地址变量,且在该链接脚本中的单独一个段存放符号 表,该符号表即上述通过符号信息获取到的符号表。
[0039] b、通过链接脚本对嵌入式程序目标文件和符号表目标文件进行链接。
[0040] 值得说明的是,该处描述的步骤a是执行在步骤104之前的流程,其后执行的步骤 b实际为步骤104在两个目标文件进行链接时的实际执行流程。
[0041] 本发明另一实施例提供了一种嵌入式程序运行符号表的生成方法,在该实施例中 介绍了生成嵌入式程序运行符号表的整体执行流程,如图2所示,该方法包括:
[0042] 201、将嵌入式程序源代码编译为一个嵌入式程序目标文件。
[0043] 202、从嵌入式程序目标文件中提取符号信息,生成符号表源文件。
[0044] 其中,在本实施例中,需要从嵌入式程序目标文件中获取的符号信息至少包括:符 号名称、符号在所在段的相对地址、段名称三种。但是符号信息还可以有:符号大小、符号类 型。
[0045] 203、将符号表源文件编译为符号表目标文件。
[0046] 204、将嵌入式程序目标文件和符号表目标文件进行链接,生成包含符号表的嵌入 式程序。
[0047] 在上述步骤204中,生成的包含符号表的嵌入式程序也就是嵌入式程序运行符号 表。
[0048] 结合上述如图2所示方法流程的描述,本发明提供了一个具体实例进行嵌入式程 序运行符号表的生成,在该实例中,以生成的嵌入式程序目标文件是映像目标文件Image. 〇为例进行说明,且结合上述步骤202的描述,在本实施例中获取符号信息包括:符号名称、 符号在所在段的相对地址、符号大小、符号类型、段名称5种信息,如图3所示,该方法包 括:
[0049] 301、根据嵌入式软件的原有规则进行编译,产生嵌入式程序目标文件Image. 〇。
[0050] 值得说明的是,嵌入式软件编译后可以产生多个文件,包括库文件(.a文件)和目 标文件(.〇文件),比如可以有:嵌入式系统库文件lib_os. a、嵌入式驱动库文件libdrv. a、嵌入式应用库文件lib_app. a、起始目标文件:start. 〇等。进一步的,对这些编译后的文 件进行合成,合成一个Image. 〇,在本实施例中合成目标文件Image. 〇时,可以是由任意一 个或者多个库文件,或者任意一个或多个目标文件来合成。本实施例以,通过start, ο 1 ib_ os. a libdrv. a lib_app. a合成Image. 〇文件为例进行说明,且该Image. 〇的生成过程可以 通过如下代码实现:
[0051] gcc start, o lib_os. a libdrv. a lib_app. a-〇 Image, o
[0052] 302、解析Image. 〇,获取符号信息,并根据符号信息生成符号表源文件。
[0053] 值得说明的是,结合上述对本实例的描述,在本步骤中获取的符号信息包括:符号 名称、符号在所在段的相
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1