26

据我从文档中可以看出,Android NDK 中两种支持的 ARM 架构风格之间的区别仅在于支持的 CPU 指令集。真的是这样吗?调用约定、系统调用顺序或其他方面没有区别吗?

我想知道如果我将模块编译为 ARM 目标文件(使用 NDK 以外的编译器 - 特别是 Free Pascal),将 ARMv6 指定为架构,然后将其链接到 armeabi 和 armeabi-v7a 共享库,会发生什么。FPC 位不应该既不执行系统调用也不执行 Java 调用,除非通过我自己的基于 C 的接口。

编辑:一个 hello world 库,使用 FPC for ARM 编译,链接并在 ARMv7a 模拟器下运行。

4

1 回答 1

9

您绝对可以在 v7 上运行 armeabi 共享库,并且可以从另一个模块调用它的导出函数。所以,为了安全起见,我会.so从你的 Pascal 代码中创建一个单独的文件,坚持使用 armeabi(可能使用一些 C/C++ 包装器),并将这个共享库与你的 armeabi 和 armeabi-v7a 库一起使用。以正确顺序加载所有内容的最简单方法是使用

System.loadLibrary("pascal"); // armeabi
System.loadLibrary("c++"); // the platform will choose armeabi or armeabi-v7a
于 2012-09-02T09:32:23.147 回答