android - 基于 MIPS 的 Android 免费 Pascal

标签 android android-ndk cross-compiling freepascal fpc

尝试将 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/

相关文章:

android - 将 Android Studio 更新到 2020.3.1 Canary 14 Build 后 Unresolved Kotlin 引用

java - 如何处理屏幕方向变化

c - 在为 android 交叉编译 util-linux 库时出现错误

Android NDK-BUILD 程序在静态数组分配时崩溃

eclipse - nSight eclipse Edition 远程交叉编译和执行

android - Gradle同步失败:脱机模式下没有com.android.tools.build:gradle:6.2.2的缓存版本

java - Android - 应用程序关闭时保留文件

java - 在此代码示例中,AssetManager 类成员是否会被 JVM 垃圾回收?

android - 安卓下"openssl/aes.h: No such file or directory"

c++ - 在 cmake 中使用两个工具链