как использовать llvm + clang для компиляции для stm32 - PullRequest
20 голосов
/ 02 ноября 2011

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

  • хост: Linux, AMD64
  • цель: кортекс-м3, stm32
  • c-lib: newlib
  • ассемблер: GNU as

Ответы [ 2 ]

6 голосов
/ 20 ноября 2015

Я создал структуру прошивки - 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 ...

2 голосов
/ 03 ноября 2011

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

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

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

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

...