如何使用LLVM+Clang编译STM32代码?

24
有人知道如何使用binutils和newlib构建一个llvm+clang工具链,并且如何使用它吗?
主机:Linux,AMD64 目标:cortex-m3,stm32 C库:newlib 汇编器:gnu as
2个回答

9
我创建了一个固件框架 - PolyMCU https://github.com/labapart/polymcu - 它基于 CMake,支持 GCC 和 LLVM。因为它基于 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 ++编程感到满意,可以编写必要的“HostInfo”,以便它会自动调用正确的工具并提供正确的路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接