当前位置: 首页 > news >正文

景洪市新农村建设网站sem竞价托管公司

景洪市新农村建设网站,sem竞价托管公司,酷酷123网址之家,做网站第一步做什么文章目录 什么是符号表符号表的作用是什么如何生成符号表符号表中的数据类型有哪些?符号表与map文件什么关系? 上篇文章:ARM 嵌入式 番外篇 编译系列 8 – RT-Thread 编译命令 Scons 详细讲解 什么是符号表 在 ARM GCC 中,符号表…

文章目录

    • 什么是符号表
    • 符号表的作用是什么
    • 如何生成符号表
    • 符号表中的数据类型有哪些?
    • 符号表与map文件什么关系?

上篇文章:ARM 嵌入式 番外篇 编译系列 8 – RT-Thread 编译命令 Scons 详细讲解

什么是符号表

在 ARM GCC 中,符号表(Symbol Table)是一个记录了代码中所有符号信息的数据结构。符号可以是变量、函数、宏、类型等标识符。符号表中的每个符号都有一个唯一的名称,并且与该符号关联的还有符号的地址、类型、大小等信息。

符号表的作用是什么

符号表在编译过程中起着重要的作用。它允许编译器在编译期间解析和处理各种符号引用。在链接过程中,链接器使用符号表来解析符号的引用和重定位地址,以便正确地将程序的各个部分连接在一起。

如何生成符号表

在 GCC 中,你可以使用 -g 选项生成调试信息,其中包括符号表。这个符号表通常以一种特定的格式(如 ELF 格式)存储在可执行文件或库文件中。调试器可以使用这个符号表来显示和查询程序中的符号信息,以便在调试时定位问题或查看变量值和函数调用栈等。

使用"nm"命令或者"objdump"命令来生成符号表。

以下是具体步骤

使用带有"-g"选项的arm-gcc编译你的代码。例如:

arm-none-eabi-gcc -g -o output.elf input.c

这会生成一个名为"output.elf"的二进制文件,它包含了调试信息。

使用"nm"或"objdump"命令生成符号表。例如:

arm-none-eabi-nm -n output.elf > symbol_table.txt

输入内容如下:

arm-none-eabi-nm -n soc.oU __bss_endU __bss_startU clock_framework_initU _edataU _estackU _etextU get_syscnt_usU _heap_endU _heap_startU rt_components_board_initU rt_console_set_deviceU rt_hw_interrupt_initU rt_kprintfU rt_system_heap_initU rt_tick_increaseU _sdataU _sstackU _stext
00000000 T baud_rate_fixup
00000000 t ctrlg_key_dis
00000000 R __fsym___cmd_reboot
00000000 R __fsym___cmd_reboot_name
00000000 T get_ref_clk
00000000 W get_sys_clock
00000000 t lock_crg_key

或者

arm-none-eabi-objdump -t output.elf > symbol_table.txt

这将会生成一个名为"symbol_table.txt"的文件,里面包含了符号表信息。

输处内容如下:

arm-none-eabi-objdump -t soc.osoc.o:     file format elf32-littlearmSYMBOL TABLE:
00000000 l    df *ABS*  00000000 soc.c
00000000 l    d  .text  00000000 .text
00000000 l    d  .data  00000000 .data
00000000 l    d  .bss   00000000 .bss
00000000 l    d  .text.__NVIC_SetPriority       00000000 .text.__NVIC_SetPriority
00000000 l     F .text.__NVIC_SetPriority       00000054 __NVIC_SetPriority
00000000 l    d  .text.SCB_EnableICache 00000000 .text.SCB_EnableICache
00000000 l     F .text.SCB_EnableICache 0000004c SCB_EnableICache
00000000 l    d  .text.SCB_EnableDCache 00000000 .text.SCB_EnableDCache
00000000 l     F .text.SCB_EnableDCache 00000088 SCB_EnableDCache
00000000 l    d  .text.SysTick_Config   00000000 .text.SysTick_Config
00000000 l     F .text.SysTick_Config   00000044 SysTick_Config
...
00000000 l    d  .text.lock_crg_key     00000000 .text.lock_crg_key
00000000 l     F .text.lock_crg_key     00000024 lock_crg_key
00000000 l    d  .text.reboot   00000000 .text.reboot
00000000 l     F .text.reboot   00000030 reboot
00000000 l    d  .rodata.name   00000000 .rodata.name
00000000 l    d  FSymTab        00000000 FSymTab
00000000 l    d  .text.get_ref_clk      00000000 .text.get_ref_clk

注意:请将上述命令中的"arm-none-eabi-gcc"、"arm-none-eabi-nm"和"arm-none-eabi-objdump"替换成你的工具链中的实际命令。

符号表中的数据类型有哪些?

在ARM GCC生成的符号表中,常见的数据类型标识有以下几种:

  • 'T''t':表示该符号是在text(代码)段定义的函数或者其他符号;
  • 'D''d':表示该符号是在数据段定义的已初始化数据;
  • 'B''b':表示该符号是在BSS段定义的未初始化数据;
  • 'C':表示该符号是通用符号;
  • 'U':表示该符号在其他文件中定义,即未定义;
  • 'W':表示该符号是弱符号,可能在其他文件中被重定义;
  • 'N':表示该符号是debugging symbol.。

注意: 大写字母表示全局符号,小写字母表示局部符号。

符号表与map文件什么关系?

符号表和map文件都是在编译链接过程中生成的输出文件,主要用于程序调试和分析。它们之间的关系和区别如下:

  • 符号表(Symbol Table):符号表是在编译过程中生成的,主要包含了源代码中定义的函数和变量的信息,如名称、类型、大小、地址等。通过查看符号表,我们可以看到源代码中每个符号在编译后的具体信息,便于我们在调试过程中定位和解决问题。

  • Map文件:Map文件是在链接过程中生成的,主要包含了各个目标文件和库文件在链接过程中的地址分配情况,以及程序的内存布局等信息。通过查看Map文件,我们可以看到程序的具体内存布局,便于我们理解程序的运行过程和优化程序的内存使用。

因此,符号表和Map文件虽然都包含了程序的符号信息,但它们的生成过程和主要用途是不同的,一般来说,符号表主要用于程序调试,而Map文件主要用于程序分析和优化。

上篇文章:ARM 嵌入式 番外篇 编译系列 8 – RT-Thread 编译命令 Scons 详细讲解

http://www.hkea.cn/news/819784/

相关文章:

  • 建设一个网站需要哪些方面的开支百度人工客服
  • 品牌网站建设-建站之路最新疫情新闻100字
  • 东莞网站优化科技有限公司怀柔网站整站优化公司
  • 郑州网站建设联系方式外链是什么意思
  • 用wordpress做网站教程电脑优化大师有用吗
  • 佛山企业网站制作今日热点新闻事件
  • 企业网站网络推广黑帽seo培训
  • 欧美做的爱爱网站有哪些广告推广赚钱
  • 泉州网站建设工作室谷歌seo价格
  • 国建设委员会网站百度推广一天烧几千
  • 做网站 花园路国贸营销推广方案包括哪些内容
  • 做商城网站哪里买口碑营销属于什么营销
  • 鞋子 东莞网站建设真正的免费建站在这里
  • 网站上微信的链接怎么做项目平台
  • 做网站后有人抢注关键词网络营销方案策划论文
  • 苏州网站建设网站seo优化的方法
  • 设计网装修seo顾问服
  • 网站ip拦截免费网站搭建平台
  • 深圳企业网站建设公司快速申请免费个人网站
  • 唯品会 一家专门做特卖的网站沈阳seo按天计费
  • 聊城手机网站建设郑州seo服务技术
  • 个人定做衣服店江门seo推广公司
  • 网站开发与网站建设山东济南seo整站优化费用
  • 香港疫情最新消息今天深圳seo教程
  • 维护一个网站难吗免费发布外链
  • 南安市网站建设成都今天重大新闻事件
  • 网站后台补丁如何做软文有哪几种类型
  • 网站建设的费用包括哪些内容资讯门户类网站有哪些
  • 一站式服务图片制作网页的基本步骤
  • 个人网站建设网站网络网站推广