ChibiOS中对_sbrk的未定义引用

时间:2015-09-07 22:34:01

标签: embedded sbrk chibios

我正在使用ChibiOS 3.x编写嵌入式应用程序。在编译/链接它时,我遇到如下错误消息:

/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7e-m/libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'

_sbrk在哪里定义,如何解决此问题?

2 个答案:

答案 0 :(得分:2)

_sbrkos/various/syscalls.c中定义,因此请确保正确编译和链接此文件。

请注意_sbrk将正常运行当且仅当 CH_CFG_USE_MEMCORE == TRUE时(您可以在chconf.h中进行更改)。否则,malloc()将始终返回0并生成errno ENOMEM。另请参阅this answer以获取有关ENOMEM问题的更全面说明。

另请注意,对于嵌入式应用程序,尤其是在针对高可靠性时,可能不建议使用动态内存分配(其中_sbrk是其中的一部分)(请参阅this detailed explanation)< / p>

答案 1 :(得分:2)

在我的Makefile

中将$(CHIBIOS)/os/various/syscalls.c \添加到CSRC