我正在使用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是在哪里定义的,我如何解决这个问题?
发布于 2015-09-07 22:34:00
_sbrk是在os/various/syscalls.c中定义的,因此确保正确编译和链接该文件。
请注意,_sbrk将在CH_CFG_USE_MEMCORE == TRUE (您可以在chconf.h中更改)的情况下才正确工作。否则,malloc()总是返回0并得到errno of ENOMEM。还请参阅this answer,以获得对ENOMEM问题的更全面解释。
还请注意,对于嵌入式应用程序,特别是在获得高可靠性时,使用动态内存分配( _sbrk是其中的一部分)可能是不可取的(请参阅this detailed explanation)。
https://stackoverflow.com/questions/32446814
复制相似问题