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

问题描述

总的来说,我是 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...