stm32如何使用llvm+clang编译

Posted

技术标签:

【中文标题】stm32如何使用llvm+clang编译【英文标题】:how to use llvm+clang to compile for stm32 【发布时间】:2011-12-20 12:50:39 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

我创建了一个固件框架——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 大多少……

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

以上是关于stm32如何使用llvm+clang编译的主要内容,如果未能解决你的问题,请参考以下文章

如何使用clang+llvm+binutils+newlib+gdb搭建交叉编译环境

如何自托管 Clang?

如何使用 Clang 在 C 程序中嵌入 LLVM 程序集或内在函数?

在KEIL编译器中STM32怎么样可以定义Flash地址定义常量

如何使用 LLVM 在 Windows 上为 ARM 编译 C++ 程序?

Visual Studio 2019 LLVM clang 标志