我着迷于纯代数/函数语言。Pure解释器使用LLVM JIT编译器作为后端。
我想编译Pure,使其在Android(ARM)上运行。Pure依赖于LLVM JIT。所以我需要编译LLVM源代码,以便Pure运行。
是否可以编译LLVM源代码为Android (ARM)设备?在网上似乎真的没有关于这个的信息。也许我的搜索条件错了。搜索Android LLVM也没有很多好的结果
现在看起来可能了,NDK现在支持使用LLVM的Clang。因此,也许它可以与任何LLVM语言一起工作。AOSP应该让我们了解一下他们是如何添加Clang支持的。有关Clang支持的详细信息,请参阅最新的Android NDK。
Android NDK, Revision 8c(2012年11月)
重要的变化:
在NDK中添加了Clang 3.1编译器。GNU编译器集合(GCC) 4.6仍然是默认的,所以你必须显式地启用Clang编译器选项,如下所示:
对于ndk-build,导出NDK_TOOLCHAIN_VERSION=clang3.1或将此环境变量设置添加到Application.mk中。
对于独立构建,在make-standalone-toolchain.sh中添加——llvm-version=3.1,并将make文件中的CC和CXX替换为/bin/clang和/bin/clang++。详情请参阅STANDALONE-TOOLCHAIN.html。
注意:此功能是实验性的。请尝试并报告任何问题。
虽然你肯定可以在ARM上编译LLVM(这是相当琐碎的-只是普通的配置+ make系统),但你仍然不够幸运:ARM上的JIT仍在进行中,所以我不期望它能在所有非琐碎的事情上工作。
Android NDK似乎会在这方面有所帮助,因为其常见问题解答页面的用法之一是重用C/c++代码。
我认为我们应该看到LLVM + Android NDK (c++)的混合。
我正在考虑类似smalltalk的动态对象系统(*),LLVM的使用对于Android设备上的惰性动态编译非常有趣。
首先,你应该建立一个类似于小型的Buildroot/OpenWrt Linux系统(或使用CLFS或我的脚本:https://github.com/ponyatov/L/tree/clock构建你自己的)用于ARM设备,如树莓派(这是我的测试案例)。如果你在这个变体上获得了不错的结果,之后你可以迁移到Android设备本身。我认为你需要一些c++/NDK粘合代码来采用LLVM/Pure core与Android运行时和GUI。(* *)
(*)但是用我自己的语言语法,lisp一样的功能能力来改变所有的系统内部,解析器/编译器集成框架,也许还有一些基本的符号计算机代数
(**) Android Pi还活着吗?
据我所知,你还不能为ARM设备构建LLVM。