如何编译clang用作avr的编译器?

时间:2013-09-25 13:15:57

标签: gcc clang cross-compiling avr

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

  1. 从android ndk
  2. 创建独立工具链
  3. 使用正确的CC和CXX参数进行编译。
  4. 其他?它是否支持--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
    

    ...导致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
    

2 个答案:

答案 0 :(得分:3)

LLVM包含AVR目标一段时间以来(参见http://llvm.org/svn/llvm-project/llvm/trunk/lib/Target/AVR/)。 骨架是在2015年底添加的,大部分后端实施都是在2016年5月完成的。

截至目前(2017-09-05),README.md文件表明该目标仍然是试验性的,并且是针对8位Atmel AVR微控制器完成的。

答案 1 :(得分:2)

LLVM存储库中的当前targets集不包括AVR。这并不意味着没有为编译AVR做过任何工作,只是它不在官方的源代码库中。

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