有人知道如何使用 binutils 和 newlib 构建 llvm+clang 工具链以及如何使用它吗?
- 主机:Linux、AMD64
- 目标:cortex-m3、stm32
- c-lib:新库
- 汇编程序:gnu as
我创建了一个固件框架——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 大多少...
不幸的是,目前 clang 不支持灵活的交叉编译设置。因此,您很可能需要使用所有必要的参数调用必要的工具。
从使用 --target=thumbv7-eabi 配置参数构建 llvm + clang 开始(请注意,从昨天开始,您将需要 llvm + clang)。您可能还想指定 --enable-targets=arm 。这将指示 clang 默认为 thumb 生成代码。在此之后,您可以调用 clang -mcpu=cortex-m3 为您生成代码。
您必须通过 -I / -L 等手动提供所有必要的包含/库路径。
如果您对某些 C++ hacking 感到满意,您可以编写必要的“HostInfo”,这样它将调用正确的工具并自动提供正确的路径。