как использовать llvm+clang для компиляции для stm32

Кто-нибудь знает, как создать цепочку инструментов llvm + clang с использованием binutils и newlib и как ее использовать?

  • хост: Linux, AMD64
  • цель: кора-м3, стм32
  • c-lib: новая библиотека
  • ассемблер: gnu как

person Community    schedule 02.11.2011    source источник


Ответы (2)


Я создал структуру прошивки — PolyMCU https://github.com/labapart/polymcu, основанную на CMake с поддержкой GCC и LLVM. Поскольку он основан на CMake, вы можете собрать свою прошивку на Linux/Windows/MacOS. Он также использует Newlib — похоже, все ваши требования там!

Я также написал блог, в котором сравнил размер сборки GCC и LLVM на ARM Cortex-M: http://labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space Интересные результаты, сгенерированный Clang код ненамного больше, чем GCC на Cortex-M...

person OlivierM    schedule 20.11.2015

К сожалению, сейчас clang не поддерживает гибкие настройки кросс-компиляции. Так что, скорее всего, вам нужно будет вызвать необходимые инструменты со всеми необходимыми аргументами.

Начните со сборки llvm + clang, используя аргумент конфигурации --target=thumbv7-eabi (обратите внимание, что для этого вам понадобится llvm + clang со вчерашнего дня). Вы также можете указать --enable-targets=arm. Это даст команду clang генерировать код для thumb по умолчанию. После этого вы можете вызвать clang -mcpu=cortex-m3, чтобы сгенерировать код для вас.

Вам нужно будет указать все необходимые пути включения/библиотеки вручную через -I/-L и т.д.

Если вас устраивает какой-то взлом C++, вы можете написать необходимую «HostInfo», чтобы он автоматически вызывал правильные инструменты и предоставлял правильные пути.

person Anton Korobeynikov    schedule 02.11.2011