如何用arm gcc生成符号table

How to generate symbol table with arm gcc

我想创建一个符号定义 table 以便在链接期间在单独的应用程序中使用。 ARM 的 armlink 链接器具有以下标志,但我使用的是 arm-eabi:

--symdefs=filename

-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