如何找到未定义的函数并将它们添加/链接为外部函数?

问题描述

总的来说,我是 IAR 工作台的新手(准确地说是 EWARM),所以我有几个可能很愚蠢的问题。 首先,这就是我真正想做的事情和提出的问题:

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

感谢任何帮助。

解决方法

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

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