ChibiOS 中对 _sbrk 的未定义引用

Undefined reference to _sbrk in ChibiOS

我正在使用 ChibiOS 3.x 编写嵌入式应用程序。当compiling/linking时,我遇到这样的错误信息:

/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 在哪里定义,我该如何解决这个问题?

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

请注意 _sbrk 将正常工作 当且仅当 CH_CFG_USE_MEMCORE == TRUE(您可以在 chconf.h 中更改)。否则,malloc() 将始终 return 0 并导致 errnoENOMEM。另请参阅 以获得对 ENOMEM 问题的更详尽解释。

另请注意,对于嵌入式应用程序,尤其是在以高可靠性为目标时,可能根本不建议使用动态内存分配(_sbrk 是其中的一部分)(参见 this detailed explanation )

在我的 Makefile

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