2013-09-25 122 views
1

我想交叉編譯clang作爲編譯器使用avr(arduino更加詳細)。我覺得我應該做的像水木清華未來:如何編譯clang以用作avr的編譯器?

  1. 創建的Android NDK獨立的工具鏈
  2. 編譯正確CC和CXX參數。

Smth否?它支持--target = avr或我如何編譯?這是否有意義,因爲它將像IDE自動完成工具一樣用於使用clang-c API解析源代碼?

UPDATE:用host以及--target PARAMS配置:

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 
+1

你在哪裏得到源代碼?你能告訴你編譯哪個版本嗎? –

+0

我遵循官方的llvm入門步驟並從svn中提取它。現在我試圖交叉編譯它,而不是使用獨立的ndk工具鏈,我得到了另一個錯誤:ld:unknown選項:--version-script =/Users/asmirnov/Documents/dev/src/llvm/autoconf/ExportMap .map clang:error:linker命令失敗,退出代碼1(使用-v查看調用) make [2]:*** [/ Users/asmirnov/Documents/dev/src/llvm_build/Release + Asserts/bin/FileCheck] Error 1 make [1]:*** [FileCheck/.makeall] Error 2 make:*** [all]錯誤1這隻涉及到macosx上的交叉編譯 – 4ntoine

+0

這裏說http:/ /clang.llvm.org/get_started.html是否使用過'--with-gcc-toolchain' –

回答

2

在當前設定的targets LLVM存儲庫不包含AVR。這並不意味着在編譯AVR時沒有做任何工作,只是它不在官方的源代碼庫中。

有關向LLVM添加後端的文檔,請轉至here

+0

https://github.com/sushihangover/llvm-avr。除我以外,任何人都有興趣嗎 – 4ntoine

+0

@ 4ntoine:非常酷,但它自2014年2月21日以來沒有提交過。 – Graznarak

+0

這不是我的回購,所以我不確定 – 4ntoine

1

LLVM自從一段時間以來包含AVR目標(請參閱http://llvm.org/svn/llvm-project/llvm/trunk/lib/Target/AVR/)。 該骨架於2015年末加入,大部分後端實施於2016年5月左右完成。

截至目前(2017-09-05),README.md文件表示此目標仍爲實驗性,一款8位Atmel AVR微控制器。