NDK编译不同架构的参数
随着Android的蓬勃发展, CPU的架构也越来越多. 早期只支持ARMv5, 截至目前, 支持的架构已达三类七种: ARM(ARMv5,ARMv7 (从2010年起),ARMv8), x86(x86 (从2011年起),x86_64 (从2014年起)) ,MIPS(MIPS (从2012年起),MIPS64). 众多架构使用的指令集不尽相同, 与相应的ABI关联: armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64. 所以, NDK编译不同架构的库要选择不同的ABI.
不同ABI的分支节点在NDK根目录的toolchains目录和不同版本SDK目录中 (我的NDK根目录为/home/ndk/android-ndk-r10e), 选择不同的ABI主要涉及以下几点:
$NDK: NDK根目录
$ABI: 相应的ABI目录名
$PLATFORM: SDK版本目录名
- 不同的gcc编译器
- 在$NDK/toolchains/$ABI/prebuilt/linux-x86_64/bin, 例如ARMv7为 /home/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
- 不同的g++编译器
- 在$NDK/toolchains/$ABI/prebuilt/linux-x86_64/bin, 例如ARMv7为 /home/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++
- 其他相应的工具
- 都在$NDK/toolchains/$ABI/prebuilt/linux-x86_64/bin, 寻找相应的后缀, 例如nm则是 arm-linux-androideabi-nm
- 不同的include路径
- 包括两个部分: 架构目录 和 SDK目录
- 架构头目录: 在$NDK/toolchains/$ABI/prebuilt/linux-x86_64/include, 例如ARMv7为 /home/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/include
- SDK头目录: 在$NDK/platforms/$PLATFORM/$ABI/usr/include, 例如ARMv7,SDK版本21为 /home/ndk/android-ndk-r10e/platforms/android-21/arch-arm/usr/include
- 包括两个部分: 架构目录 和 SDK目录
- 不同的lib路径
- 包括两个部分: 架构目录 和 SDK目录
- 架构库目录:
在$NDK/toolchains/$ABI/prebuilt/linux-x86_64/lib, 例如ARMv7为
/home/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib - SDK库目录:
在$NDK/platforms/$PLATFORM/$ABI/usr/lib, 例如ARMv7,SDK版本21为
/home/ndk/android-ndk-r10e/platforms/android-21/arch-arm/usr/lib
- 架构库目录:
- 包括两个部分: 架构目录 和 SDK目录
- gcc编译寻找头文件和库文件的根目录
- 在$NDK/platforms/$PLATFORM/$ABI, 例如ARMv7,SDK版本21为 /home/ndk/android-ndk-r10e/platforms/android-21/arch-arm
以上为编译过多个NDK库的总结, 属于普遍性, 但各个库又具有特殊性, 具体还要添加什么参数, 还需特殊情况特殊处理
学术浅薄, 不足之处, 望请指出
参考:
Android NDK 工具链的使用方法(Standalone Toolchain)
NDK编译不同架构的参数的更多相关文章
- Linux下NDK编译FFMPEG包含neon参数
FFMPEG编译成Android库已经有很多案例了,编译优化neon的也很多,以下是我通过实践成功的案例,这里主要讲编译的配置文件,其他设置可结合Linux下使用NDK编译FFMPEG(libstag ...
- ndk编译出来的executable动态库入口函数的参数错乱
早些时间用ndk编译带main入口函数的动态库,测试可运行.今天要作它用时,发现在这个入口函数并没有传入正确的参数. hello.cpp有main函数,用ndk分别编译成可执行文件和动态库文件,使两者 ...
- Android Studio 中关于NDK编译及jni header生成的问题
之前由于工作原因使用grails这个基于groovy的框架做项目,对groovy感觉很好. 基于groovy的gradle构建系统对我而言自然也是好的没得说. Android Studio 正式版出来 ...
- anroid ndk编译ffmpeg 引用librtmp libx264
Ffmpeg 无处不在,自然android系统少不了它,折腾了不少时间完成 ndk编译ffmpeg,生成so库中引用了外部库librtmp,libx264.条条大路通罗马, 也许还有别的更好的方法去完 ...
- ndk编译时的通用Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := live555 MY_SRC_PATH := $(LOCAL_PA ...
- arm 及ndk编译
首页 » Android android的armeabi跟armeabi-v7a 网友分享于:2014-03-16 浏览:867次 android的armeabi和armeabi-v7 ...
- ndk 编译 boost 库,支持serialization
Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C+ ...
- 浅谈独立使用NDK编译库文件(Android)
阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...
- android NDK编译(导入).a文件和编译多个so文件(转)
源:android NDK编译(导入).a文件和编译多个so文件 一.编译一个静态库 libstatic_android.a LOCAL_PATH := $(call my-dir) include ...
随机推荐
- 如何在ubuntu下使用samba创建共享
快速简单的创建共享,比网上那些乱七八糟过时的文档强太多 原文地址: https://help.ubuntu.com/community/How%20to%20Create%20a%20Network% ...
- 「HAOI2016」放棋子
题目链接 戳这 前置知识 错位排序 Solution 我们可以观察发现,每一行的障碍位置对答案并没有影响. 于是我们可以将此时的矩阵化成如下形式: \[ 1\ \ 0\ \ 0\ \ 0\\ 0\ \ ...
- Linux解压工具
指令 yum install lrzsz
- dos窗口运行java文件需要jar依赖
执行java文件时候,有些里面依赖了java之外的jar,这是识别不到的,运行java命令的时候,带上jar路径: java -cp .;jar路径(加上jar名字) java文件名 例:java ...
- DOM操作技术之动态脚本与动态样式(兼容版)
动态脚本 使用<script>元素可以向页面中插入Javascript代码,一种方式是通过其src特性包含外部文件,另一种方式就是用这个元素本身来包含代码. 而我们要说的动态脚本,指的是在 ...
- kill 进程的一些小细节
终止前台进程,可以用Ctrl+C组合键.但对于后台进程需要用kill命令. kill PID 还可以加信号(参数),默认情况下是编号为15的信号.term信号将终止所有不能捕捉该信号的进程. -s 可 ...
- 【python】10分钟教你用python下载和拼接微信好友头像图片
前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...
- css3中的display:-webkit-box的用法
一. css weui-media-box__desc { color: #999999; font-size: 13px; line-height: 1.2; overflow: hidden; t ...
- Domoticz 中添加彩云天气
前言 用过一段时间的彩云天气 APP,最吸引我的地方是精确到局部区域的天气预测,虽然准确度并不算高,但是对于预测下雨还是不错的选择.在 Domoticz 中添加彩云天气的数据,利用的是彩云天气提供的 ...
- Springboot 整合 中国移动MAS HTTP1.0 实现短信发送服务(二)
原因:身份验证传入的参数包含中文企业名,因为本地编码格式是支持中文的:而客户的服务器中文却乱码,导致传给中国移动MAS服务器的是乱码的信息. 解决:非常简单,将中文信息转为UTF-8.例如(%E5%8 ...