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标准中有几个标准预定义宏(也是常用的): __ ...
随机推荐
- vue项目的搭建使用
环境变量的安装 参考 环境变量详解 第一次搭建参考 参考 简单初始项目搭建 配置好环境变量的项目的搭建 新建一个new proproject, 查看工作目录vue是否存在 使用查看指令 v ...
- Redis自学笔记:3.2入门-字符串类型
3.2字符串类型 实际上redis不只是数据库,更多的公司和团队将redis用作缓存和 队列系统 3.2.1介绍 字符串类型是redis最基本的数据类型,它能存储任何形式的字符串, 包括二进制数据.你 ...
- [Java]Java分层概念(转)
service是业务层 action层即作为控制器 DAO (Data Access Object) 数据访问 1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分 ...
- 如何使用 ccs7.2调试代码
首先将单片机连接在电脑USB口上 或者 或者F11快捷键 如果编译通过的话,会是这个样子 F11调试后会停在主函数开始处 第一个黄绿组合的按钮就是继续调试,快捷键为F8,按F8后它会停在断点处,如果为 ...
- dedecms在后台替换文章标题、内容、摘要、关键字
dedecms在后台替换文章标题.内容.摘要.关键字所在的字段为: 后台替换文章内容 数据表:dede_addonarticle 字段:body 后台替换文章摘要内容 数据表:dede_archive ...
- Myeclispe下struts-config.xml文件无法图形界面打开
1.今天更改web.xml文件不小心误删了下面的配置文件,导致出现如图的错误 <servlet-mapping> <servlet-name>action</servle ...
- 如何移除HTML5 input在type="number"时的上下小箭头
在chrome下: input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{ -webkit-appearance ...
- java文章标题及文章相似度计算hash算法实现
参看了 https://github.com/awnuxkjy/recommend-system 对方用了 余弦 函数实现相似度计算,我则用的是 hanlp+hash 算法(Hash算法总结) 再看服 ...
- OpenSceneGraphic 着色器中数组的应用【转】
https://blog.csdn.net/zsq306650083/article/details/50533480 //osg的写法osg::ref_ptr<osg::StateSet> ...
- [Vuex] Split Vuex Store into Modules using TypeScript
When the Vuex store grows, it can have many mutations, actions and getters, belonging to different c ...