据我从文档中可以看出,Android NDK中两种受支持的ARM架构风格之间的区别仅在于受支持的CPU指令集。真的是这样吗?在调用约定、系统调用顺序或其他方面没有区别吗?
我想知道如果我将一个模块编译成一个ARM目标文件(特别是使用非NDK - Free Pascal的编译器),指定ARMv6作为体系结构,然后将其链接到armeabi和armeabi-v7a共享库,会发生什么情况。FPC位不应该执行系统调用或Java调用,除非通过我自己的基于C的接口。
编辑: hello world库,使用FPC for ARM编译,链接并在ARMv7a仿真器下运行。
发布于 2012-09-02 17:32:23
你绝对可以在v7上运行armeabi共享库,并且你可以从另一个模块调用它的导出函数。所以,为了安全起见,我会从你的Pascal代码中创建一个单独的.so
文件,坚持使用armeabi (可能带有一些C/C++包装器),并将这个共享库与armeabi和armeabi-v7a库一起使用。要以正确的顺序加载所有内容,最简单的方法是使用
System.loadLibrary("pascal"); // armeabi
System.loadLibrary("c++"); // the platform will choose armeabi or armeabi-v7a
https://stackoverflow.com/questions/12219202
复制相似问题