Отключить malloc по умолчанию с помощью arm-none-eabi для cortex m3 (голый металл) - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу предоставить свою собственную или, что лучше, функцию 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 голосов
/ 07 ноября 2018

Использование того же имени, что и у стандартной функции, почти всегда плохая идея.

Даже вы, через некоторое время, не работая над этим проектом, не помните, что это malloc(), которое вы читаете в своем коде, не является malloc(), который мы все знаем и любим. Оставь в стороне кого-то еще.

Итак, для удобства обслуживания и удобства чтения я предлагаю вам назвать свою функцию по-другому, простой пример: my_malloc().

PS: Возможно, вы захотите прочитать GCC - Как остановить связывание malloc?

...