打印
[STM32F1]

STM32F103RB上 FreeRTOS出现错误

[复制链接]
328|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
内核558|  楼主 | 2025-4-4 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 STM32F103RB上进行 FreeRTOS开发,当完成安装和配置时,出现如下编译错误
13:57:07 **** Incremental Build of configuration Debug for project RTOS_BOMBARDIER ****make -j11 all arm-none-eabi-gcc -o "RTOS_BOMBARDIER.elf" @"objects.list"   -mcpu=cortex-m3 --specs=nosys.specs -Wl,-Map="RTOS_BOMBARDIER.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.macos64_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/crt0.o: In function `_start':(.text+0x4a): undefined reference to `main'collect2: error: ld returned 1 exit statusmake: *** [makefile:41: RTOS_BOMBARDIER.elf] Error 1"make -j11 all" terminated with exit code 2. Build might be incomplete. 13:57:07 Build Failed. 1 errors, 0 warnings. (took 153ms)
该怎么办来解决这个问题?

使用特权

评论回复
沙发
公羊子丹| | 2025-4-5 07:40 | 只看该作者
这个错误说明链接器找不到main()函数,先看看你项目里是不是没有实现int main(void)。

使用特权

评论回复
板凳
周半梅| | 2025-4-5 07:41 | 只看该作者
有时候是main.c被你不小心删了,或者没被加到编译路径里,建议检查一下Src目录下有没有main.c。

使用特权

评论回复
地板
帛灿灿| | 2025-4-5 07:42 | 只看该作者
你用的是FreeRTOS模板项目还是自己手动配置的?有些例程是用main_thread()启动任务,主函数是另一个文件里的。

使用特权

评论回复
5
童雨竹| | 2025-4-5 07:43 | 只看该作者
我之前遇到过是.cproject配置有问题,main.c虽然在文件夹里,但没有加入构建组,结果一样报undefined reference to main。

使用特权

评论回复
6
万图| | 2025-4-5 07:44 | 只看该作者
建议你重新用CubeMX生成一遍代码,勾选FreeRTOS,然后看Src和Inc文件夹里是不是自动生成了main.c和main.h。

使用特权

评论回复
7
Wordsworth| | 2025-4-5 07:45 | 只看该作者
也有可能你改了main()的名字或参数,比如写成了void main(),这种也会导致链接器找不到符号。

使用特权

评论回复
8
Bblythe| | 2025-4-5 07:45 | 只看该作者
看路径你是在macOS上用的CubeIDE,注意文件名大小写敏感问题,比如Main.c和main.c是不一样的。

使用特权

评论回复
9
Pulitzer| | 2025-4-5 07:46 | 只看该作者
你有没有清理过项目再编译?有时候IDE的构建缓存出错,试试Project→Clean一下再重新build。

使用特权

评论回复
10
Uriah| | 2025-4-5 07:47 | 只看该作者
从报错看你的编译器参数没问题,重点排查一下是不是哪个源文件没被正确编译进.elf目标里。

使用特权

评论回复
11
Clyde011| | 2025-4-5 07:48 | 只看该作者
如果你手动添加了FreeRTOS的源码,可能要检查链接顺序或是不是少加了startup文件,也会影响_start找不到main()。

使用特权

评论回复
12
逆鳞风暴| | 2025-4-6 12:33 | 只看该作者
检查你的源文件中是否包含了`main`函数,以及是否被正确编译进项目中。有时候,如果`main`函数所在的文件没有被正确添加到项目中,也会导致这个问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

10

帖子

0

粉丝