6

试图将 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,它几乎立即出错。

4

1 回答 1

3

最后编辑:FPC 主干中提供了对 Android/MIPSEL 编译目标的支持。导出最新版本,构建交叉编译器,远离代码。


虽然可以在 FP 源代码中到处找到对 MIPS ISA 的支持,但它还没有正式完成。等待2.7版本。

同时,在主干中支持编译成 Java 字节码,它记录在 FP wiki 中。也许我可以利用它作为权宜之计......

编辑:Free Pascal over JVM 一般适用于 Android,但其规则与常规 Pascal 略有不同。否则,当编译到 JVM 时,正确的 Pascal 会失败。因此,它不适合移植一开始就没有考虑到 JVM 编写的大量遗留 Pascal 代码。

编辑:我的 FPC 项目在 MIPS/Android 上运行,但我的配方不适合一般消费,因为我项目中 Pascal RTL 的使用范围非常有限。它涉及从 Pascal 到 MIPS 程序集的交叉编译(针对 MIPSEL/Linux,在 FPC 主干中可用),然后将生成的程序集源提供给 NDK 构建系统,提供 Pascal RTL 有限子集的 C/程序集重新实现。

Pascal RTL 的整个身体又大又吓人。我的解决方案涉及从头开始在 C 中重新实现 Pascal RTL,这与普遍适用的相反。

于 2012-09-04T20:07:46.943 回答