Android CPU类型及预定义的宏
[时间:2019-02] [状态:Open]
[关键词:android,cpu, armeabi, armeabi-v7a, arm64-v8a, 32位,64位,c/c++]
本文主要总结下前段时间针对android系统上做了32位和64位的区分,顺便梳理下android支持的各种CPU类型。
ABI是什么?
ABI是Application Binary Interface(应用程序二进制接口)的首字母缩写。
不同的安卓设备使用不同的CPU,每个CPU支持的指令集也不一样。这样每种CPU和指令集的组合就需要自身的ABI。
ABI精确定义了应用程序的机器码与系统在运行时交互的方式。你编译的APP需要支持哪些CPU指令集都需要在编译是给出。
通常ABI包含以下信息:
- 可用的CPU指令集
- 内存存储和加载的大小端
- 可执行二进制文件的格式,例如可执行程序、共享库等
- 在代码和系统之间传递数据的约定惯例,包括数据对齐限制、函数调用时堆栈寄存器使用情况等
- 机器码可访问的函数符号列表
Android支持的ABI类型
- armeabi
- armeabi-v7a
- arm64-v8a
- x86
- x86_64
目前主流的手机一般都支持armeabi-v7a(32位)和arm64-v8a(64位)。
Android设备在安装app时会根据ABI类型和系统实际版本进行匹配,选择最优的类型安装。
如果你的APP同时提供了armeabi-v7a和arm64-v8a的so库,在64位Android系统上,安装时会自动安装arm64-v8a的库,而在32位系统上,只能选择armeabi-v7a的库。
Android区分CPU是64位还是32位的预定义宏
__arm__32位ARM__aarch64__64位ARM__i386__32位X86__x86_64__64位X86
x86上的32位和64位预定义宏不太一样,注意区分下。
小结
本文主要整理了Android支持的ABI类型以及如何参考预定义宏区分CPU是32位还是64位。仅供后续使用。
更多信息建议参考Android关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题一文。
参考链接:
- Android-doc Dealing with CPU features
Android CPU类型及预定义的宏的更多相关文章
- VS2013 预定义的宏
Visual Studio 2013 预定义的宏 https://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.120).aspx 列出预定义的 ANS ...
- visual c++中预定义的宏
一.主要目标 (由于visual studio通常包含很多开发环境,通常将其中c/c++的ide称为visual c++ 20xx) 整理下visual c++ 2010下预定义的宏.做一下备忘和了解 ...
- gcc中预定义的宏__GNUC__
转载:gcc中预定义的宏__GNUC__ - Cccarl - 博客园 (cnblogs.com) 今天在看Linux系统编程这本书的代码的时候看到了__GNUC__,不太清楚这个宏所以去查了一下,以 ...
- C标准中一些预定义的宏
C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏(双下滑线) 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __ ...
- C标准中一些预定义的宏,如__FILE__,__func__等
C标准中一些预定义的宏 C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串 ...
- ARM编译器中预定义的宏
arm系列目前支持三大主流的工具链,realview的armcc,iar ewarm的iccarm,gnu的gcc,编译器在编译的时候会预定义一些宏,这些宏在工程中起到不可或缺的作用. 例如 /* d ...
- 2019-8-31-dotnet-新项目格式与对应框架预定义的宏
title author date CreateTime categories dotnet 新项目格式与对应框架预定义的宏 lindexi 2019-08-31 16:55:58 +0800 201 ...
- dotnet 新项目格式与对应框架预定义的宏
在 sdk style 的项目格式支持使用多框架开发,此时需要在代码里面通过宏判断,在编译的时候执行不同的代码.本文告诉大家在框架里面对应的预定义的条件编译符有哪些 在让一个 csproj 项目指定多 ...
- C/c++几个预定义的宏:__DATE__,__TIME__,__FILE__,__LINE__
一边情况下,C/C++编译器会内置几个宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): __ ...
随机推荐
- VirtualBox 共享文件夹设置及使用方法
工具:VirtualBox,ubuntu14.04 1.选择要设置共享文件夹的虚拟机,点击设置 点击共享文件夹,新建文件夹,选择路径 2.打开虚拟机,从上方工具栏中找到设备,然后点击安装增强功能(由于 ...
- git 合并子工程
一.关于合并代码合并带有子工程更改的代码1.先git merge master --no-ff origin/devlop(把develop分支代码合并到master) 解决冲突等 2.进入到子工程目 ...
- Java代码优化小结(三)
(35)对资源的close()建议分开操作虽然有些麻烦,却能避免资源泄露.我们想,如果没有修改过的代码,万一XXX.close()抛异常了,那么就进入了catch块中了,YYY.close()不会执行 ...
- 【DWM1000】 code 解密5一ACHOR 第一次回家Main 函数
instance_run(); if((instance_data[0].monitor == 1) && ((portGetTickCnt() - instance_data[0]. ...
- CodeForce VKcup A
题目描述:例如A-B,B-C是好朋友,那么A-C一定是好朋友,给一些点,和一些描述,观察是否成立 题目链接:点我 一个互相认识的团体,一定是每个点都和其他点相连的,那么边数为n(n-1)/2,把得到的 ...
- [模板][P4238]多项式求逆
NTT多项式求逆模板,详见代码 #include <map> #include <set> #include <stack> #include <cmath& ...
- [BZOJ1814]Formula 1
Description: 一个 m * n 的棋盘,有的格子存在障碍,求经过所有非障碍格子的哈密顿回路个数 Hint: \(n,m<=12\) Solution: 插头dp模板题,注意要讨论多种 ...
- 【OpenCV】访问Mat中的每个像素值
其中注意i,j的位置,写错了好几次.第二个for循环中的if语句用异或来判断图像中哪些像素点发生了改变.
- Java中Reflect的基本使用
首先在package reflect下定义了一个类Book package reflect; class Book{ private String title; private double pric ...
- WebApi升级到2.0以后的XmlDocumentationProvider
using System; using System.Globalization; using System.Linq; using System.Reflection; using System.W ...