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

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

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

【问题讨论】:

    标签: arm llvm clang cortex-m3 stm32


    【解决方案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”,这样它将调用正确的工具并自动提供正确的路径。

      【讨论】:

        猜你喜欢
        • 2012-02-27
        • 2020-01-19
        • 2013-04-29
        • 1970-01-01
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        • 2014-07-19
        • 1970-01-01
        相关资源
        最近更新 更多