是否可以将LLVM库编译为android / ARM

时间:2011-07-12 14:37:24

标签: android arm llvm cross-compiling

我为Pure algebraic/functional language着迷。 Pure解释器使用LLVM JIT编译器作为其后端。

我想compile Pure以便在Android(ARM)上运行。 Pure依赖于LLVM JIT。所以我需要为Pure运行编译LLVM源代码。

是否可以为Android(ARM)设备编译LLVM source?网上似乎没有关于此的信息。也许我的搜索条件错了。搜索Android LLVM也没有带来很多好的点击。

5 个答案:

答案 0 :(得分:14)

现在看起来可能,NDK现在支持使用LLVM的Clang。所以也许可以使用任何LLVM语言。 AOSP应该让我们了解他们如何添加Clang支持。在Clang支持中查看details的最新Android NDK。

  

Android NDK,修订版8c(2012年11月)
  重要变化:
  将Clang 3.1编译器添加到NDK。 GNU编译器集合(GCC)4.6仍然是默认值,因此您必须按如下方式显式启用Clang编译器选项:
  对于ndk-build,导出NDK_TOOLCHAIN_VERSION = clang3.1或将此环境变量设置添加到Application.mk。
  对于独立版本,将--llvm-version = 3.1添加到make-standalone-toolchain.sh并使用/ bin / clang和/ bin / clang ++替换makefile中的CC和CXX。有关详细信息,请参阅STANDALONE-TOOLCHAIN.html   注意:此功能是实验性的。请尝试并报告任何问题。

答案 1 :(得分:13)

虽然你可以在ARM上编译LLVM(它非常简单 - 只需普通的configure + make系统),但你仍然运气不好:ARM上的JIT仍在进行中,所以我不指望它为一切工作而努力。

答案 2 :(得分:3)

似乎Android NDK对此有帮助,因为其FAQ页面的一个用法是重用C / C ++代码。

答案 3 :(得分:1)

我认为我们会看到LLVM + Android NDK(C ++)的混合。

我正在考虑类似SmallTalk的动态对象系统(*),并且对于Android设备上的懒惰动态编译,LLVM的使用非常有趣。

首先尝试构建类似小型Buildroot / OpenWrt Linux系统的东西(或使用CLFS或我的脚本构建您自己的代码:https://github.com/ponyatov/L/tree/clock) 对于像Raspberry Pi这样的ARM设备(我的测试用例)。如果您在此变体上获得了良好的效果,稍后您可以迁移到Android设备本身。我认为您需要一些C ++ / NDK粘合代码来采用LLVM / Pure核心与Android运行时和GUI。 (**)

(*)但是使用我自己的语言语法,类似于lisp的函数能力来改变所有系统内部,解析器/编译器集成框架,以及一些符号计算机代数的基础知识

(**)是Android Pi活着吗?

答案 4 :(得分:-2)

据我所知,你还不能为ARM设备构建LLVM。