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
在哪里定义,我该如何解决这个问题?
_sbrk
在 os/various/syscalls.c
中定义,因此请确保此文件已正确编译和链接。
请注意 _sbrk
将正常工作 当且仅当 CH_CFG_USE_MEMCORE == TRUE
(您可以在 chconf.h
中更改)。否则,malloc()
将始终 return 0 并导致 errno
为 ENOMEM
。另请参阅 以获得对 ENOMEM
问题的更详尽解释。
另请注意,对于嵌入式应用程序,尤其是在以高可靠性为目标时,可能根本不建议使用动态内存分配(_sbrk
是其中的一部分)(参见 this detailed explanation )
在我的 Makefile
中将 $(CHIBIOS)/os/various/syscalls.c \
添加到 CSRC
我正在使用 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
在哪里定义,我该如何解决这个问题?
_sbrk
在 os/various/syscalls.c
中定义,因此请确保此文件已正确编译和链接。
请注意 _sbrk
将正常工作 当且仅当 CH_CFG_USE_MEMCORE == TRUE
(您可以在 chconf.h
中更改)。否则,malloc()
将始终 return 0 并导致 errno
为 ENOMEM
。另请参阅 ENOMEM
问题的更详尽解释。
另请注意,对于嵌入式应用程序,尤其是在以高可靠性为目标时,可能根本不建议使用动态内存分配(_sbrk
是其中的一部分)(参见 this detailed explanation )
在我的 Makefile
中将$(CHIBIOS)/os/various/syscalls.c \
添加到 CSRC