【发布时间】:2013-08-10 20:40:59
【问题描述】:
我正在为 STM32F4 微控制器编译一个 c++ 应用程序。 我的所有代码都编译成功,但是链接步骤失败了 以下错误:
/tmp/ccGj7Wge.o: In function `LoopFillZerobss':
(.text.Reset_Handler+0x32): undefined reference to `main'
collect2: error: ld returned 1 exit status
我熟悉未定义引用主要错误的典型原因, 也就是说,尝试编译一个根本没有 main 存在的应用程序。 但是,我确实有一个 main.cpp,当然,其中还有一个 main 函数。 它编译为 main.o,并与创建的其他目标文件链接 在编译期间。
我在 STM32F407 上进行交叉编译,并且正在运行裸机。
任何人对此有任何见解或以前见过此错误?我唯一看到 LoopFillZerobss 的地方 函数在板的汇编启动文件中。
【问题讨论】:
-
那么,您的代码中没有
main?LoopFillZerobss可能是main之前的初始化代码的一部分——用零填充块存储部分是 C 和 C++ 中初始化的一部分,因为全局变量需要设置为零。
标签: c++ linker main bare-metal stm32f4discovery