[STM32F1] STM32F103RB上 FreeRTOS出现错误

[复制链接]
1294|18
 楼主| 内核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()启动任务,主函数是另一个文件里的。
童雨竹 发表于 2025-4-5 07:43 | 显示全部楼层
我之前遇到过是.cproject配置有问题,main.c虽然在文件夹里,但没有加入构建组,结果一样报undefined reference to main。
万图 发表于 2025-4-5 07:44 | 显示全部楼层
建议你重新用CubeMX生成一遍代码,勾选FreeRTOS,然后看Src和Inc文件夹里是不是自动生成了main.c和main.h。
Wordsworth 发表于 2025-4-5 07:45 | 显示全部楼层
也有可能你改了main()的名字或参数,比如写成了void main(),这种也会导致链接器找不到符号。
Bblythe 发表于 2025-4-5 07:45 | 显示全部楼层
看路径你是在macOS上用的CubeIDE,注意文件名大小写敏感问题,比如Main.c和main.c是不一样的。
Pulitzer 发表于 2025-4-5 07:46 | 显示全部楼层
你有没有清理过项目再编译?有时候IDE的构建缓存出错,试试Project→Clean一下再重新build。
Uriah 发表于 2025-4-5 07:47 | 显示全部楼层
从报错看你的编译器参数没问题,重点排查一下是不是哪个源文件没被正确编译进.elf目标里。
Clyde011 发表于 2025-4-5 07:48 | 显示全部楼层
如果你手动添加了FreeRTOS的源码,可能要检查链接顺序或是不是少加了startup文件,也会影响_start找不到main()。
逆鳞风暴 发表于 2025-4-6 12:33 | 显示全部楼层
检查你的源文件中是否包含了`main`函数,以及是否被正确编译进项目中。有时候,如果`main`函数所在的文件没有被正确添加到项目中,也会导致这个问题。
flycamelaaa 发表于 2025-4-22 12:01 | 显示全部楼层
FreeRTOS 项目没有标准的 main 函数。
powerantone 发表于 2025-4-22 14:00 | 显示全部楼层
可能是项目模板问题。
stormwind123 发表于 2025-4-22 16:03 | 显示全部楼层
链接脚本或启动文件可能未正确配置,导致链接器期望 main 函数。
probedog 发表于 2025-4-22 20:21 | 显示全部楼层
链接器可能未正确包含 FreeRTOS 的启动代码,或者未正确处理 FreeRTOS 的入口点。
classroom 发表于 2025-4-22 22:00 | 显示全部楼层
清理并重建项目。
两只袜子 发表于 2025-4-22 22:23 | 显示全部楼层
用 STM32CubeMX 重新生成项目。
捧一束彼岸花 发表于 2025-4-23 01:23 | 显示全部楼层
STM32F103RB 上进行 FreeRTOS 开发时,出现 undefined reference to 'main' 错误,通常是由于链接器无法找到 main 函数的定义

失物招領 发表于 2025-4-23 02:34 | 显示全部楼层
FreeRTOS 应用程序通常需要定义一个入口点(main 函数),并正确初始化 FreeRTOS 和硬件

您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

56

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部