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