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 在 C 程序中嵌入 LLVM 程序集或内在函数?
在KEIL编译器中STM32怎么样可以定义Flash地址定义常量