01_ndk目录介绍
精力都放在安卓上。所以说呢C这个东西不要纠结太多,对大家的要求就是能看懂,会调用。
Java的特点是一处编译到处运行,跨平台。优势是比native语言强,一处编译到处运行。native语言的劣势是不能跨平台。linux上不能用qq。
今天咱们要写的是native,写C,今天咱们要写程序部署到安卓的设备上。安卓设备是linux操作系统,而我现在是想在windows上编写native,本地的代码,然后我想让它运行在linux上。
native平台相关性强。现在咱们是在windows上写程序,最后想让它运行在安卓的手机上。
说一个概念:交叉编译。在一个平台上编译出在另外一个平台上可以运行的本地代码。
平台 cpu平台 x86(intel和amd) arm(手机上使用的就是arm架构的cpu) arm与pc上跑的这个x86架构的cpu在指令集和整个硬件的结构都是有区别的。 mips 少见的
安卓上最多的就是arm pc上基本上就是这个x86. 早期的苹果电脑上是IBM搞的那个处理器,它的架构跟x86有区别,但是后来苹果跟IBM分手了,又转投入到了X86的怀抱,现在都用的 是英特尔的cpu.
操作系统平台 windows linux mac os android就是一个类linux,在它基础之上进行修改.unix 实际上linux和mac os都叫一个类unix操作系统.都是在unix基础之上搞出来的这个东西.
不同的操作系统所支持的系统的命令是不一样的.x86 cpu支持的指令集和arm支持的指令集也是有区别的.
交叉编译工具的原理:模拟另外一个平台的特性进行编译.
NDK. Native develop kit. NDK可以帮助咱们在windows平台 x86 cpu上编译出在linux arm平台或者linux x86平台上可以执行的二进制代码.可以编译出这样的本地代码.如果你是一个mac os的操作系统,你要下载一个mac版本的NDK来跑.它就是在mac的操作系统上mac os上模拟安卓的特点帮你编译出x86或者arm cpu可以执行的本地代码.
CDT:在eclipse上做C/C++开发的插件.你直接用它是不行的,你指定了一个NDK之后它可以帮助你编译C的代码.如果你不指定这个东西的话你直接想用它来写C的代码,要求你的操作系统,在你当前windows上得装一个C的编译环境.跑eclipse编译java的代码需要有一个JDK,JDK可以帮助你把java进行编译.CDT不包含C代码的编译工具,所以还需要装一个C的编译环境.
今天咱们主要就是写NDK的开发,NDK的包里面包含了C相关的编译的内容.
docs 在安卓下做JNI开发可能会用到的相关的这些文档.跟SDK的文档有点区别了.NDK里面每一个html页面就是一个小专题.界面也没有SDK好看,也没有中文的.
platforms 平台,有不同的安卓的版本.不同安卓版本它所支持的JNI相关的这些内容.最新的NDK版本是r11.
usr:unix system resource.unix系统资源.每一个类unix操作系统你都能找到usr这个目录.
include:存放跟JNI开发相关的头文件.头文件只不过是对你使用的某些函数的声明,具体的实现得有地方放才行.
lib:实现在lib里面.
需要特殊载入的咱们通过配置文件的方式把.so和.a它打包好的这些东西给它载入进来.
4.0以下的设备很少了.选android-13或者android-14即可.
samples:样例.
sources:源码.跟JNI相关的源代码.SDK的源码你愿意可以看一看,NDK的源码暂时不用看.有功夫还是看SDK的源码好过.
toolchains:工具链.交叉编译的工具链.针对不同CPU平台和不同操作系统平台所用到的交叉编译工具.
build->tools:有一系列的.sh文件..sh就是linux下的批处理命令.类似于windows下的bat文件..sh批处理命令封装了一系列的linux命令,通过它就可以去调用整个的交叉编译的工具链.调用toolchains里面的交叉编译工具,开启交叉编译的过程.
ndk-build.cmd:构建编译.交叉编译的过程是从ndk-build.cmd开始的.你想通过黑窗口在命令行里面编译一个NDK,做NDK的开发,把C的代码编译成可以在linux/安卓上运行的可执行文件,必须得使用ndk-build.cmd.所以说你想在黑窗口命令行里面搞的话就要把它放到环境变量里面.
它默认你一运行这个ndk-build会到你当前的这个文件夹里面去找有没有安卓的工程.实际上C:\Users\ZHONGZHENHUA>这个目录下没有安卓的工程.所以它报了找不到安卓工程的错.如果你没有配到环境变量里面你去敲ndk-build,它会报找不到系统命令的错误.把能够看见ndk-build的这一级目录放到环境变量里.
01_ndk目录介绍的更多相关文章
- JavaWeb——tomcat安装及目录介绍
一.web web可以说,就是一套 请求->处理->响应 的流程.客户端使用浏览器(IE.FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Reque ...
- SharePoint常用目录介绍
SharePoint常用目录介绍 stsadm命令管理程序目录:C:\Program Files\Common Files\Microsoft Shared\web server extensions ...
- Android sdk目录介绍
android sdk目录介绍 build-tools 各版本SDK编译工具 docs 离线开发者文档Android SDK API参考文档 extras 扩展开发包,如兼容架包. platforms ...
- android 源码目录介绍
Android 4.0源码目录介绍|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及gener ...
- weblogic基本目录介绍,位数查看,启动与发布项目,修改JVM参数,设置项目为默认项目
这里的基本目录%base%表示安装目录,如我的目录为:E:/weblogic就是%base% 1.weblogic目录介绍 weblogic主要的目录介绍: 1.日志目录: 每个domain(域)都有 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- Linux中 /boot 目录介绍 【转载】
Linux中 /boot 目录介绍 转自:点击打开链接 一./boot/目录中的文件和目录 Linux系统在本地启动时,目录/boot/非常重要,其中的文件和目录有: (1)系统Kernel的配置文件 ...
- mysql 源代码目录及安装目录介绍
1.源代码目录介绍: 1.BUILD BUILD目录是编译.安装脚本目录,绝大部分以compile-开头,其中的SETUP.sh脚本为C和C++编译器设置了优化选项.2.client cl ...
- mysql--mysql的安装与目录介绍
一.mysql的下载安装 1.下载安装 1.windows10下安装 我们采用绿色免安装版, 打开你的mysql文件夹中的bin目录,我的是这个样子的 将这个路径添加入系统环境变量,首先右键此电脑-- ...
随机推荐
- UVA - 12661 Funny Car Racing (Dijkstra算法)
题目: 思路: 把时间当做距离利用Dijkstra算法来做这个题. 前提:该结点e.c<=e.a,k = d[v]%(e.a+e.b); 当车在这个点的1处时,如果在第一个a这段时间内能够通过且 ...
- 虚拟机下Linux网络配置
之前配置好了linux系统,在网络这块我用的是桥接模式. 现在分享一下使用虚拟机桥接模式配置Linux网络的过程. 一.首先配置外网的本地Ip地址. 二.配置Linux 网络链接 1.打开linux网 ...
- python爬虫25 | 爬取下来的数据怎么保存? CSV 了解一下
大家好 我是小帅b 是一个练习时长两年半的练习生 喜欢 唱! 跳! rap! 篮球! 敲代码! 装逼! 不好意思 我又走错片场了 接下来的几篇文章 小帅b将告诉你 如何将你爬取到的数据保存下来 有文本 ...
- HDU 1228 字符串到数字的转化
一道水题,练练字符串的输入输出 #include <cstdio> #include <cstring> using namespace std; ] , s2[]; int ...
- cpus Vs cpu period and cpu quota
1. https://docs.oracle.com/cd/E37670_01/E75728/html/section-zb1_wqw_gt.html To control a container' ...
- 洛谷—— P2176 [USACO14FEB]路障Roadblock
https://www.luogu.org/problem/show?pid=2176 题目描述 每天早晨,FJ从家中穿过农场走到牛棚.农场由 N 块农田组成,农田通过 M 条双向道路连接,每条路有一 ...
- Ubuntu下使用Sysvinit实现自定义服务(简单研究)
通过上一篇文章http://www.cnblogs.com/EasonJim/p/7168216.html可以大概了解到Sysvinit的历史. 其实在自定义服务上,使用Sysvinit是最简单的,本 ...
- Spring MVC中@RequestMapping注解使用技巧(转)
@RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...
- 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation
R-CNN总结 不总结就没有积累 R-CNN的全称是 Regions with CNN features.它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统 ...
- hdu 3555 Bomb 【数位DP】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 题意:上一题是不要62 这个是"不要49" 代码: #include < ...