23

binutils と newlib を使用して llvm+clang ツールチェーンを構築する方法と、その使用方法を知っている人はいますか?

  • ホスト: Linux、AMD64
  • ターゲット: cortex-m3、stm32
  • c-lib: newlib
  • アセンブラ: gnu as
4

2 に答える 2

9

GCC と LLVM をサポートする CMake に基づいたファームウェア フレームワーク (PolyMCU https://github.com/labapart/polymcu ) を作成しました。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 よりもそれほど大きくありません...

于 2015-11-20T10:51:53.490 に答える
2

残念ながら、現時点では、clang は柔軟なクロスコンパイル設定をサポートしていません。したがって、ほとんどの場合、必要なすべての引数を指定して必要なツールを呼び出す必要があります。

--target=thumbv7-eabi configure 引数を使用して llvm + clang をビルドすることから始めます (これには昨日の時点で llvm + clang が必要になることに注意してください)。--enable-targets=arm も指定することをお勧めします。これにより、clang は既定で Thumb 用のコードを生成するように指示されます。この後、clang -mcpu=cortex-m3 を呼び出してコードを生成できます。

-I / -L などを使用して、必要なすべてのインクルード / ライブラリ パスを手動で指定する必要があります。

C++ のハッキングに満足している場合は、必要な「HostInfo」を記述して、適切なツールを呼び出し、適切なパスを自動的に提供することができます。

于 2011-11-02T20:27:22.240 に答える