问题描述
总的来说,我是 IAR 工作台的新手(准确地说是 EWARM),所以我有几个可能很愚蠢的问题。 首先,这就是我真正想做的事情和提出的问题:
- 我需要检查 .o (.obj) 文件中是否有未定义的符号并可能收集它们。当我使用 GCC 时,我使用 nm 和
--undefined-only
选项来列出这些符号。那么,IAR (EWARM) 中是否有类似的工具? - 收集了这些未定义的符号后,我需要手动将这些符号(函数)链接到特定地址。在使用 GCC 时,我使用了 ld 脚本并在脚本的 ENTRY 部分放置了
function = address
条目。那么,在 EWARM 中执行相同操作的正确方法是什么?
感谢任何帮助。
解决方法
-
仅使用 EWARM 发行版中的工具没有直接的方法来执行此操作,但由于 iccarm 生成 ELF 文件,因此您可以在此步骤中继续使用
nm --undefined-only
。 -
至少有两种不同的方法可以做到这一点。首先,ilink 有一个命令行选项,允许您定义符号到地址的映射。例如,添加
--define_symbol print=0x1234
将添加值为 0x1234 的符号打印。其次,可以使用.icf
指令在链接器配置文件(define exported symbol
-file)中定义符号。上面的例子表示为define exported symbol print = 0x1234
。