当前位置:嗨网首页>书籍在线阅读

27-nm

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

13.6.5 nm

实用程序nm用于显示目标文件中的符号。它在很多地方都能派上用场,例如,假设你在交叉编译一个大型应用程序,但碰到了未解析的符号。你可以用nm来找出是哪些目标模块包含了这些符号,并相应地修改构建环境,将它们包含进来。

nm还提供了每个符号的属性。例如,你可以查看一个符号是局部的还是全局的,它是在一个特定的目标模块中定义的还是引用的。在代码清单13-18中,我们使用nm查看了u-boot(ELF格式的U-Boot镜像)中的符号,并显示了部分输出信息。

代码清单13-18 使用nm显示符号

379.png 注意这些U-Boot符号的链接地址。它们是针对一个闪存设备而链接的,在这个目标板上,它们位于内存映射的最高部分。这里只列出了几个符号,以便讨论。中间一列是符号类型。大写字母表示的是全局符号,而小写字母则表示局部符号。B表示这个符号位于 .bss 段。T表示这个符号位于 .text 段。D表示这个符号位于 .data 段。A表示地址是绝对地址,在后续的链接阶段中不会改变。这个绝对符号代表了 .bss 段的开始,程序启动时负责清除 .bss 段的代码会用到,而这是C执行环境所要求的。