如何找到未定义的函数并将它们 add/link 作为外部函数?

How do I find undefined functions and add/link them as external functions?

一般来说,我是 IAR 工作台的新手(准确地说是 EWARM),所以我有几个可能很愚蠢的问题。 对于初学者,这是我真正想做的事情和引起的问题:

  1. 我需要检查 .o (.obj) 文件中是否有未定义的符号并可能收集它们。当我使用 GCC 时,我使用 nm--undefined-only 选项来列出这些符号。那么,IAR(EWARM)中有没有类似的工具呢?
  2. 收集了这些未定义的符号,我需要手动link这些符号(函数)到特定的地址。在使用 GCC 时,我使用了 ld 脚本并在脚本的 ENTRY 部分放置了 function = address 条目。那么,在 EWARM 中做同样事情的正确方法是什么?

感谢任何帮助。

  1. 仅使用 EWARM 发行版中的工具没有直接的方法来执行此操作,但由于 iccarm 生成 ELF 文件,您可以继续使用 nm --undefined-only 完成此步骤。

  2. 至少有两种不同的方法可以做到这一点。首先,ilink 有一个命令行选项,允许您定义符号到地址的映射。例如,添加 --define_symbol print=0x1234 将添加值为 0x1234 的符号 print。其次,可以使用 define exported symbol 指令在链接器配置文件(.icf-文件)中定义符号。上例表示为define exported symbol print = 0x1234.