如何使用llvm + clang来编译stm32

20 arm cortex-m3 llvm clang stm32

有人介绍如何使用binutils和newlib构建llvm + clang工具链以及如何使用它?

  • 主机:Linux,AMD64
  • 目标:cortex-m3,stm32
  • c-lib:newlib
  • 汇编程序:gnu as

小智 6

我创建了一个固件框架-PolyMCU https://github.com/labapart/polymcu-基于支持GCC和LLVM的CMake。因为它基于CMake,所以您可以在Linux / Windows / MacOS上构建固件。它还使用Newlib-看起来您的所有需求都在那里!

我还写了一个博客,比较了ARM Cortex-M上的GCC和LLVM构建大小:http : //labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space 有趣的结果,Clang生成的代码并不比Cortex-M上的GCC大很多。


Ant*_*kov 2

不幸的是,目前 clang 不支持灵活的交叉编译设置。因此,很可能您需要使用所有必要的参数调用必要的工具。

首先使用 --target=thumbv7-eabi 配置参数构建 llvm + clang (请注意,从昨天开始,您将需要 llvm + clang)。您可能还想指定 --enable-targets=arm 。这将指示 clang 默认生成拇指代码。之后,您可以调用 clang -mcpu=cortex-m3 来生成代码。

您必须通过 -I / -L 等手动提供所有必要的包含/库路径。

如果您对某些 C++ 黑客攻击感到满意,您可以编写必要的“HostInfo”,这样它将调用正确的工具并自动提供正确的路径。