ARM Linker Error: Heap was used, but no heap region was defined

ARM Linker Error: Heap was used, but no heap region was defined

我正在将一个代码库移植到一个新的构建环境,并且 运行 在 link 时处理这个问题。

Error: L6915E: Library reports error: Heap was used, but no heap region was defined

目标是 32 位 Arm Cortex R5。不在代码库的任何地方使用 malloc 或 free。过去,在类似的构建环境端口期间,我通过使用 microlib 解决了这个问题。不过这次没有这样的运气。

编辑:原来我可以通过在编译时使用 microlib 来解决这个问题。当我问这个问题时,我以为我试过了,但实际上没有。

通过重新定位 fputc 并重新定义 __stdout 和 __stdin 解决了该问题。 fputc() 的 ARM C 库实现似乎一直在使用 malloc(),因此在将 fputc 重新定位为使用我的 UART 驱动程序后,我的代码中没有堆访问函数。

struct __FILE { int handle;   /* Add whatever you need here */};
FILE __stdout;
FILE __stdin;


int fputc(int ch, FILE *f)
{
}