在皮质M3(裸机)上禁用具有arm-none-eabi的默认malloc

时间:2018-11-07 08:06:34

标签: c malloc bare-metal

我想提供自己的或更好的malloc函数。所以我想确保它根本没有链接。

我已经将-nostdlib--specs=nano.specs传递给链接器。

提供我自己的malloc函数时,我得到:
../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7-m\libc_nano.a(lib_a-malloc.o): In function `malloc': malloc.c:(.text.malloc+0x0): multiple definition of `malloc'

我正在寻找一种跳过lib_a-malloc.o

链接的方法

作为澄清:与其说完全没有malloc,还不如说是提供自己的实现。提供我自己的实现只是为了检查是否已经存在或者用于调试目的。

1 个答案:

答案 0 :(得分:1)

使用与标准函数名称相同的名称几乎总是一个坏主意。

即使您一段时间不从事该项目,也不会记得您在代码中阅读的'不是我们都知道和喜爱的malloc()。抛开其他人。

因此,出于可维护性和可读性考虑,建议您以不同的名称命名函数,例如:malloc()

PS:您可能想阅读GCC - How to stop malloc being linked?