C++学习(一七八)Android的arm64-v8a、armeabi-v7a、armeabi、x86

armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。

 

停留在arm-v7a一般为了减少安装包大小,因为如果加上arm64-v8a安装包会大很多。如果只用arm64-v8a则旧一点的手机用不了,但是因为能用arm64-v8a的手机也能用arm-v7a

Android 设备的CPU类型(通常称为”ABIs”)

Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。

 

ARM :
是嵌入式中的一种架构,全称为Advanced RISC Machine,可以理解为ARM处理器。

ABI(Application Binary Interface):
应用程序二进制接口 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。

EABI(Embedded application binary interface)

即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程,和c, c++语言接口的规范,是编译连接工具的基础规范,也是研究它们工作原理的基础

ABI和CPU关系:
大部分cpu都支持多于一种的ABI。

ABI目录(横向)和cpu(纵向) armeabi armeabi-v7a arm64-v8a mips mips64 x86 x86_64
ARMv5 支持            
ARMv7 支持 支持          
ARMv8 支持 支持 支持        
MIPS       支持      
MIPS64       支持 支持    
x86 支持 支持       支持  
x86_64 支持         支持 支持

x86设备上,选择ABI的优先级

  1. libs/x86目录中如果存在.so文件的话,会被安装。
  2. 如果不存在,则会选择armeabi-v7a中的.so文件。
  3. 如果也不存在,则选择armeabi目录中的.so文件。

arm设备上CPU 是armabi-v8a,ABI的优先级

  1. 如果手机CPU 是armabi-v8a,优先选择armabi-v8a中的.so文件。
  2. 如果不存在,则会选择armeabi-v7a中的.so文件。
  3. 如果也不存在,则选择armeabi目录中的.so文件。

arm设备上CPU 是armabi-v7a,ABI的优先级

  1. 如果手机CPU 是armabi-v7a,优先选择armabi-v7a中的.so文件。
  2. 如果不存在,则会选择armeabi中的.so文件。

 

 

 

 

 

 

 

你可能感兴趣的:(C++学习)