[Cmake-Android]SDK,NDK基本介绍
SDK常用目录
- platform-tools:该文件夹下存放了Android平台的相关工具,比如adb.exe,sqlite3.exe等。
- platforms:不同版本的SDK
- ndk-bundle:ndk目录
- tools:Android开发,调试的工具,性能监控
- sources:当前版本的源码
NDK
Android NDK是一套允许您使用原生代码语言(例如C,C++)实现部分应用的工具集。在开发某些类型的应用时(比如音视频应用),可以重复使用以这些语言编写的代码库。
NDK常用目录(ndk-bundle)
- platforms:系统依赖库
- toolchains:交叉编译工具, gcc ,ld
交叉编译
交叉编译:就是在一个平台(如PC)上生成另一个平台(Android,Ios或者其他嵌入设备)的可执行 代码。
比如: 在x86的机器上编译出arm上的程序
在linux平台上编译arm上的程序
无论是自行安装PC上的编译器,还是下载其他平台(Android或者iOS)的交叉工具编译链,它们都会提供以下几个工具:CC、AS、AR、LD、NM、GDB。
CC:编译器,对C源文件进行编译处理,生成汇编文件。
AS:将汇编文件生成目标文件(汇编文件使用的是指令助记符,AS将它翻译成机器码)。
AR:打包器,用于库操作,可以通过该工具从一个库中删除或者增加目标代码模块。
LD:链接器,为前面生成的目标代码分配地址空间,将多个目标文件链接成一个库或者是可执行文件。
GDB:调试工具,可以对运行过程中的程序进行代码调试工作。
STRIP:以最终生成的可执行文件或者库文件作为输入,然后消除掉其中的源码。
NM:查看静态库文件中的符号表。
Objdump:查看静态库或者动态库的方法签名。
交叉编译中有两个需要注意的点:
第一:在哪个平台上运行交叉编译工具
第二:编译的程序是在哪个平台上执行
动态库:在编译的时候只把库函数的地址写到执行文件当中,在运行的时候再根据库函数的地址去加载动态链接库
静态库:在编译的时候直接把源码复制到执行文件或者库当中
应用二进制界面(ABI)
- 不同的Android手机使用不同的CPU, 因此支持不同的指令集。
- CPU与指令集的每种组合都有其自己的应用二进制界面,即ABI
ABI包含以下信息:
- CPU指令集
- 内存字节顺序
- 可执行二进制文件的格式
- 解析的各种约定。对齐限制,堆栈使用和调用函数
- 库集
支持的ABI
每个 ABI 支持一个或多个指令集。如下表:
NEON
NEON 提供标量/矢量指令和寄存器(与 FPU 共享,armeabi默认),主要用来进行浮点运算
-mfpu = vfp (浮点协处理器)
-mfpu = neon 指定是否使用neon
-march = armv7-a
- android sdk基本包介绍
- Android Fragment 基本介绍
- Windows下NDK开发环境的搭建(Cygwin+Android-SDK+NDK)
- 【Android-Emulator】Android模拟器介绍和基本使用
- Android-DataBinding入门系列(一)基本介绍
- NDK下 将Platinum SDK 编译成so库 (android - upnp)
- Android Fragment基本介绍
- 【Android-Emulator】Android模拟器介绍和基本使用
- Windows下NDK开发环境的搭建(Cygwin+Android-SDK+NDK)(转)
- Xamarin Android教程Android基本知识版本介绍与系统介绍
- Android四大基本组件介绍与生命周期
- Android Stuido 使用cMake构建NDK项目
- Android 增强现实介绍+常用SDK分享比较
- 03.Android基本组件介绍
- Android之SDK、NDK、JNI和so文件
- [Android]RxJava的简单介绍和基本使用(一)
- 【android基础一】Android四大基本组件介绍与生命周期
- Android bluetooth介绍(一):基本概念及硬件接口
- 利用 CMake 和 NDK 交叉编译 Android 下的可执行程序
- Android 联系人数据库介绍以及对联系人的基本操作