1

我正在使用 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定义,我该如何解决这个问题?

4

2 回答 2

4

添加$(CHIBIOS)/os/various/syscalls.c \CSRC我的 Makefile

于 2017-01-28T22:06:57.980 回答
2

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

请注意,当且仅当(您可以在 中更改它)时,它_sbrk才能正常工作。否则,将始终返回 0 并导致of 。另请参阅此答案以更全面地解释该问题。 CH_CFG_USE_MEMCORE == TRUEchconf.hmalloc()errnoENOMEMENOMEM

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

于 2015-09-07T22:34:00.723 回答