Кто-нибудь знает, как создать цепочку инструментов llvm + clang с использованием binutils и newlib и как ее использовать?
- хост: Linux, AMD64
- цель: кора-м3, стм32
- c-lib: новая библиотека
- ассемблер: gnu как
Кто-нибудь знает, как создать цепочку инструментов llvm + clang с использованием binutils и newlib и как ее использовать?
Я создал структуру прошивки — 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...
К сожалению, сейчас clang не поддерживает гибкие настройки кросс-компиляции. Так что, скорее всего, вам нужно будет вызвать необходимые инструменты со всеми необходимыми аргументами.
Начните со сборки llvm + clang, используя аргумент конфигурации --target=thumbv7-eabi (обратите внимание, что для этого вам понадобится llvm + clang со вчерашнего дня). Вы также можете указать --enable-targets=arm. Это даст команду clang генерировать код для thumb по умолчанию. После этого вы можете вызвать clang -mcpu=cortex-m3, чтобы сгенерировать код для вас.
Вам нужно будет указать все необходимые пути включения/библиотеки вручную через -I/-L и т.д.
Если вас устраивает какой-то взлом C++, вы можете написать необходимую «HostInfo», чтобы он автоматически вызывал правильные инструменты и предоставлял правильные пути.