Я использую (STM32F407VG-Discovey board) с компилятором "gcc-arm-none-eabi-7-2017-q4-major" (arm-none-eabi-gcc) и пытаюсь реализовать "планшетные буферы проекта Google».Для этого нужна библиотека времени выполнения malloc.h, а также куча памяти.
Я включаю кучную память на своем процессоре ARM и проверил ее с помощью include и попробую выполнить базовую операцию, вызывающую функцию malloc.Все работает нормально.
Теперь я включил заголовочные файлы Google Flatbuffers, и теперь я получаю сообщение об ошибке "неопределенная ссылка на` posix_memalign '".Мой компоновщик не может найти эту функцию.Он не находит, но он уже должен иметь его posix_memalign в stdlib.h Ошибка выглядит так:
![enter image description here](https://i.stack.imgur.com/7rEw4.png)
В моемФайл CMake Я установил свои флаги на
SET(CMAKE_C_FLAGS "-mthumb -fno-builtin -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wall -std=gnu11 -ffunction-sections -fdata-sections -fomit-frame-pointer -mabi=aapcs -fno-unroll-loops -ffast-math -ftree-vectorize -lc -lrdimon" CACHE INTERNAL "c compiler flags")
Также я выясняю, что если я не использую флаги -lc и -lrdimo, там будет неопределенная ссылка на _write (), _read (), _sbrk, _exit .....
Объяснение, почему это не является дубликатом: я знаю, что добавляя библиотеку компоновщика с CMake, вы выполняете команду target_link_libraries ().Проблема здесь в том, что по нетривиальной причине мой лайнер не найдет функцию posix_memalign.Но он найдет другие функции, такие как malloc, alloc, free, ... Все они находятся в "stdlib.h".