【问题标题】:Free Pascal for Android on MIPSMIPS 上的 Android 版免费 Pascal
【发布时间】:2012-08-24 06:46:12
【问题描述】:

尝试将 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,它几乎马上就会出错。

【问题讨论】:

    标签: android android-ndk cross-compiling freepascal fpc


    【解决方案1】:

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


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

    与此同时,后备箱中有support for compiling to Java bytecode,它记录在 FP wiki 中。也许我可以利用它作为权宜之计……

    编辑:Free Pascal over JVM 通常在 Android 上工作,但 its rules are somewhat different 来自常规 Pascal。否则,当编译到 JVM 时,正确的 Pascal 会失败。因此,它不适合移植一开始就没有使用 JVM 编写的大量遗留 Pascal 代码。

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

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

    【讨论】:

    • JVM 的想法可以用来充实一点,因为 Android 不运行 JVM。您是否正在生成代码以输入 android 的 java-to-dalvik 字节码转换器?或者您是否正在向 Android 中添加第 3 方 JVM(可能但不寻常)?
    • Free Pascal 能够编译成 Java 字节码(作为 .class 文件),可以作为依赖库提供给 Android 构建系统。详情here。我的绊脚石here.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多