我为Pure algebraic/functional language着迷。 Pure解释器使用LLVM JIT编译器作为其后端。
我想compile Pure以便在Android(ARM)上运行。 Pure依赖于LLVM JIT。所以我需要为Pure运行编译LLVM源代码。
是否可以为Android(ARM)设备编译LLVM source?网上似乎没有关于此的信息。也许我的搜索条件错了。搜索Android LLVM也没有带来很多好的点击。
答案 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。