Arm 如何使用llvm+;为stm32编译的clang

Arm 如何使用llvm+;为stm32编译的clang,arm,llvm,clang,cortex-m3,stm32,Arm,Llvm,Clang,Cortex M3,Stm32,有人介绍过如何使用binutils和newlib构建llvm+clang工具链,以及如何使用它吗 主机:Linux,AMD64 靶点:cortex-m3,stm32 c-lib:newlib 汇编程序:gnu as 不幸的是,目前clang不支持灵活的交叉编译设置。因此,您很可能需要使用所有必要的参数调用必要的工具 首先使用--target=thumbv7 eabi-configure参数构建llvm+clang(注意,从昨天开始,您将需要llvm+clang)。您可能还需要指定--enabl

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

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

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

首先使用--target=thumbv7 eabi-configure参数构建llvm+clang(注意,从昨天开始,您将需要llvm+clang)。您可能还需要指定--enable targets=arm。默认情况下,这将指示clang为thumb生成代码。在此之后,您可以调用clang-mcpu=cortex-m3为您生成代码

您必须通过-I/-L等手动提供所有必要的include/library路径


如果您对一些C++黑客行为感到满意,您可以编写必要的“主机信息”,从而调用正确的工具并自动提供正确的路径。

< P>我创建了一个固件框架——MulcCu-,它是基于支持GCC和LLVM的CMAGE。因为它基于CMake,所以您可以在Linux/Windows/MacOS上构建固件。 它还使用了Newlib-看起来您的所有需求都在那里

我还写了一篇博客,比较了ARM Cortex-M上的GCC和LLVM构建大小: 有趣的结果是,Clang生成的代码并没有比Cortex-M上的GCC大多少