c - 使用 IAR 工具链将目标文件链接到不可执行的镜像

标签 c linker linker-errors iar

我正在使用 IAR 工具链编译一些源文件,然后链接生成的 .o 文件。

但是,我遇到了如下链接错误:

Error[Li005]: no definition for "main" [referenced from cmain.o(rt7M_tl.a)]

Error[Lc036]: no block or place matches the pattern "ro code section .intvec in vector_table_M.o(rt7M_tl.a)"

据我了解,ILINK 链接器正在尝试将目标文件链接为可执行镜像,并在此过程中添加来自标准库的依赖项[即寻找 main() 和中断 vector 表]。

我在寻找什么:

  1. 如何配置链接器以不添加这些系统库依赖项,例如 main/start/interrupt-vector-table 等?
  2. 如何配置链接器从一堆目标文件中输出不可执行的图像 - 如果可能的话?

您可以将这种不可执行的镜像视为配置表镜像,它将被放入持久内存中以供主应用程序镜像读取/写入。

最佳答案

如果您通过命令行选项“--no_entry”告诉链接器您没有入口点,您将删除对 main 和 .intvec 数据的引用。

但是您确实需要告诉链接器应该保留什么。
--keep 和/或 __root 可以帮助您。

关于c - 使用 IAR 工具链将目标文件链接到不可执行的镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35504829/

相关文章:

c - 递归代码模棱两可的答案

c++ - 在 VS2005 上使用 "--layout=system"时 boost 链接错误

c++ - lnk4022 : undecorated symbol - how to fix?

c++ - 危险的重定位错误是什么意思?

C - 8051 数组输出

c - 管道调用和同步

ios - ld : library not found for -lGoogleAnalyticsServices clang: error: linker command failed with exit code 1 (use -v to see invocation)

windows - 为什么 Windows 上的 clang/llvm 需要 Visual Studio 的 Link.exe?

c++ - 错误 LNK2019 :unresolved external symbol, c++

C - 较小素数的递归函数