尝试将 Delphi 库移植到 Android。 Free Pascal 具有 Android/ARM 支持 - 可以使用预构建的 Windows 编译器。但是,Android NDK 现在也支持 MIPS 和 x86。 FPC 的支持情况如何?目前,我的项目或多或少与 CPU 无关——原生位是为所有四种支持的架构构建的。不想放手。
我不是在使用 Pascal 进行 Android 开发的完整周期 - 只是一个没有 I/O 的算法库。我尝试用 p2c 将它翻译成 C,但翻译者对源代码感到困惑。
我是否应该尝试使用 Linux 为相关 CPU 构建交叉编译器,然后链接到 NDK 库?
编辑:我已经从 Android 分支的源代码中为 Intel/Linux 构建了交叉编译器。它可以工作,除了你必须调用 ppcross386
来编译,而不是 fpc
。后者似乎忽略了 -Tlinux 选项并调用了 Intel/Win32 编译器。
EDIT2:通过对 makefile 和源代码的小改动,MIPS 交叉编译器构建。然而,随着构建转向跨 CPU RTL,它几乎立即出错。
最佳答案
编辑,最后:FPC 主干中提供了对 Android/MIPSEL 编译目标的支持。导出最新版本,构建交叉编译器,编写代码。
虽然可以在 FP 源代码中随处找到对 MIPS ISA 的支持,但尚未正式完成。等待 2.7 发布。
与此同时,有 support for compiling to Java bytecode在主干中,它记录在 FP wiki 中。也许我可以利用它作为权宜之计...
编辑:基于 JVM 的免费 Pascal 通常在 Android 上运行,但是 its rules are somewhat different来自普通的 Pascal。否则在编译为 JVM 时更正 Pascal conks。因此,它不适合移植大量的遗留 Pascal 代码,这些代码一开始就没有考虑到 JVM。
编辑:我的 FPC 项目在 MIPS/Android 上运行,但我的配方不适合一般消费,因为我的项目中 Pascal RTL 的使用范围非常有限。它涉及从 Pascal 到 MIPS 程序集的交叉编译(针对 MIPSEL/Linux,在 FPC 主干中可用),然后将生成的程序集源提供给 NDK 构建系统,同时提供 Pascal RTL 的有限子集的 C/程序集重新实现。
Pascal RTL 整个人又大又吓人。我的解决方案涉及从头开始用 C 语言重新实现 Pascal RTL,这与普遍适用相反。
关于android - 基于 MIPS 的 Android 免费 Pascal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12181640/