1

我想交叉编译clang以用作avr的编译器(更详细的arduino)。我觉得我应该像下一个那样做:

  1. 从 android ndk 创建独立工具链
  2. 使用正确的 CC 和 CXX 参数进行编译。

还有什么?它是否支持 --target=avr 或者我该如何编译?这是否有意义,因为它将像 IDE 自动完成工具一样使用 clang-c API 解析源代码?

更新:配置 --host 和 --target 参数:

export CROSS_COMPILE=arm-linux-androideabi
export CC=${CROSS_COMPILE}-gcc
export CXX=${CROSS_COMPILE}-g++
export NDK=/softdev/android-ndk-r8e
export ANDROID_NDK_ROOT=/softdev/android-ndk-r8e
export SYSROOT=$NDK/platforms/android-8/arch-arm
export PATH=/softdev/arm-toolchain/bin:$PATH:/softdev/android-ndk-r8e/platforms/android-8/arch-arm

./configure --host=arm-linux-androideabi --target=arm-linux-androideabi --prefix=/softdev/arduinodroid_clang/arm
 make

...导致错误(Makefile存在):

llvm asmirnov$ sudo make
llvm[0]: Constructing LLVMBuild project information.
configure: error: Already configured in /Users/asmirnov/Documents/dev/src/llvm
make[1]: *** No targets specified and no makefile found.  Stop.
make: *** [cross-compile-build-tools] Error 1
4

2 回答 2

6

LLVM 从现在开始就包含 AVR 目标(请参阅http://llvm.org/svn/llvm-project/llvm/trunk/lib/Target/AVR/)。框架是在 2015 年底添加的,大部分后端实现是在 2016 年 5 月左右完成的。

截至目前(2017 年 9 月 5 日),README.md 文件显示该目标仍处于试验阶段,并且已针对 8 位 Atmel AVR 微控制器完成。

于 2017-09-05T12:17:58.670 回答
2

LLVM 存储库中的当前目标集不包括 AVR。这并不意味着没有为 AVR 进行编译,只是它不在官方源代码库中。

有关向 LLVM 添加后端的文档,请转到此处

于 2013-12-19T00:37:35.773 回答