有人介绍如何使用binutils和newlib构建llvm + clang工具链以及如何使用它?
答案 0 :(得分:5)
我创建了一个固件框架--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大得多......
答案 1 :(得分:2)
不幸的是,现在clang不支持灵活的交叉编译设置。因此,很可能您需要使用所有必要的参数调用必要的工具。
首先使用--target = thumbv7-eabi configure参数构建llvm + clang(请注意,从昨天开始你将需要llvm + clang)。您可能还想指定--enable-targets = arm。这将指示clang默认生成拇指代码。在此之后,您可以调用clang -mcpu = cortex-m3为您生成代码。
您必须通过-I / -L等手动提供所有必要的包含/库路径。
如果您对某些C ++黑客感到满意,可以编写必要的“HostInfo”,这样它就会调用正确的工具并自动提供正确的路径。