如何用arm gcc生成符号table
How to generate symbol table with arm gcc
我想创建一个符号定义 table 以便在链接期间在单独的应用程序中使用。 ARM 的 armlink 链接器具有以下标志,但我使用的是 arm-eabi:
-Wl,-Map -Wl,mapfile -Wl,--cref
添加到最终的 gcc (link) 命令行应该可以解决问题。
GNU objcopy utility 有一个选项 --extract-symbol
可以做你想做的事。它生成一个只有符号数据的目标文件 - 没有实际代码或数据。
它专门用于生成一个 .sym 文件供 VxWorks RTOS 使用,该文件具有使用此信息的命令 shell 和动态 linker/loader。它也被 VxWorks 主机 shell 和源代码级调试器使用。
另一方面,binutils nm utility 生成的输出与 armlink 的 --symdefs
非常相似,您可以轻松地 post 将其处理成您需要的格式。
这是来自 arm gnu launchpad 的正确答案:
您打算使用 GNU 工具链还是使用 armcc 加载 symdef 文件?如果是前者,我认为在目标文件上使用 nm 然后与 -R <filename>
链接会起作用。所以你会在链接 prog 之后做 arm-none-eabi-nm -D ./prog > ./prog.defsym
,然后在你想使用它时做 arm-none-eabi-gcc -Wl,-R,./prog.defsym
。
我想创建一个符号定义 table 以便在链接期间在单独的应用程序中使用。 ARM 的 armlink 链接器具有以下标志,但我使用的是 arm-eabi:
-Wl,-Map -Wl,mapfile -Wl,--cref
添加到最终的 gcc (link) 命令行应该可以解决问题。
GNU objcopy utility 有一个选项 --extract-symbol
可以做你想做的事。它生成一个只有符号数据的目标文件 - 没有实际代码或数据。
它专门用于生成一个 .sym 文件供 VxWorks RTOS 使用,该文件具有使用此信息的命令 shell 和动态 linker/loader。它也被 VxWorks 主机 shell 和源代码级调试器使用。
另一方面,binutils nm utility 生成的输出与 armlink 的 --symdefs
非常相似,您可以轻松地 post 将其处理成您需要的格式。
这是来自 arm gnu launchpad 的正确答案:
您打算使用 GNU 工具链还是使用 armcc 加载 symdef 文件?如果是前者,我认为在目标文件上使用 nm 然后与 -R <filename>
链接会起作用。所以你会在链接 prog 之后做 arm-none-eabi-nm -D ./prog > ./prog.defsym
,然后在你想使用它时做 arm-none-eabi-gcc -Wl,-R,./prog.defsym
。