当前位置: 首页 > 知识库问答 >
问题:

armeabi和armeabi-v7a之间的区别

严安志
2023-03-14

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

我想知道,如果我将一个模块编译到一个ARM对象文件(使用一个编译器,而不是专门使用NDK自由的Pascal),指定ARMv6作为体系结构,然后将其链接到armeabi和armeabi-v7a共享库,会发生什么情况。FPC位不应该执行系统调用或Java调用,除非通过我自己的基于C的接口。

编辑:一个hello world库,用FPC为ARM编译,链接并运行在ARMv7a仿真器下。

共有1个答案

贝研
2023-03-14

您绝对可以在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
 类似资料:
  • 对于我的Android应用程序,我现在使用的是ABI“x86”和“armeabi”。armeabi用于所有ARM设备,包括armv7a和ARM64-V8A。

  • 我试图改变我的应用程序,以支持32位和64位,但当我改变build.gradle这样。 但当我对其进行分级时,错误将显示如下 错误: 在DefaultConfig_Decorated{name=main,dimension=null,minSdkVersion=DefaultApiVersion{mApiLevel=15,mCodename='null'},targetSdkVersion=Def

  • 这是我的构建gradle(应用程序)文件: Android Studio不能同步项目,给我这个错误: 设置拆分abi筛选器时,ndk abi筛选器中的“armeabi-v7a,x86”配置冲突:x86,armeabi-v7a 配置“compile”已过时,并已替换为“implementation”。它将于2018年底被拆除 配置“debugCompile”已过时,已被“debugImplement

  • 我正在尝试将SQLCipher与我的android应用程序集成。运行应用程序时,我收到以下错误: java.lang.UnsatisfiedLinkError无法加载STLPORT_SHARED:查找库返回NULL 番石榴-R09.Jar SQLCipher.jar 在说明中,我们必须将3.OS文件添加到libs中的armeabi文件夹中,但在我的libs文件夹中,我只有android-suppo

  • 这个问题和这个帖子提到了使用ABI过滤器构建的NDK也适用于Android平台,所以我们不需要在ABI过滤器列表中包含。 然而,我在两个平台上遇到了以下问题,一个是联想Phab-P1770M和一个是红米3S。 我正在我的项目中使用opencv库。但是,当我将以下内容添加到我的中时 我看到构建的apk不包括和文件夹中的。调用函数时,显然也会出现错误。 但是,当我将添加到上面的列表中时,文件夹也会在A

  • android开发者网站https://developer.android.com/distribute/best-practices/develop/64-bit很明显,从2019年8月1日开始,Google Play上发布的应用程序将需要支持64位架构。 我们当前的应用程序有armeabi-v7a、arm64-v8a、x86 ABIs的本机库,但没有X86-64。这是因为我们正在使用的一个co