Keil5编译——Error: L6218E: Undefined symbol
1.具体问题 在初学RTThread着手最基础的——动态内存分配线程来控制LED闪烁。keil5编译时遇到以下的错误提示: STM32L431RC_BearPiLED\STM32L431RC_BearPiLED.axf: Error: L6218E: Undefined symbol rt_system_heap_init (referred from board.o). 2.问题分析 猜想: undefined,rt_system_heap_init,这两个关键词说明error与函数定义或者声明缺失有关,而且这个函数也的确是后面加上,忽略了在定义函数的.c文件进行定义或.h进行声明也是有可能的。 进一步: 找到函数调用的地方` # if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) rt_system_heap_init ( rt_heap_begin_get ( ) , rt_heap_end_get ( ) ) ; # endif 顺着函数查看函数的声明时发现——函数在rtthread.h文件进行声明,具体如下,到这里便可以确定错误的原因是调用函数缺少声明!原因是我的 RT_USING_HEAP 宏定义定义在另外一处地方,导致此处无法触发条件编译,进而缺少函数声明,所以链接时出现问题。 # ifdef RT