在上一篇博文《Android学习——windows下搭建NDK_r9环境》中,咱们详细的讲解了在windows下进行Android NDK开发环境的配置,咱们也讲到了在NDk r7之后,咱们能够不须要配置Cygwin也能够进行编译了,那么有特殊状况呢?下面就来说解一下Cygwin这个工具吧。html
Cygwin是在Windows下模拟Linux环境的工具集,它主要包含一下两个部分:android
1) cywin1.dll : 该文件模拟了真是的LinuxAPI,是一个API模拟层,开发人员能够将在Linux下编写的C/C++ 源代码在Cygwin中进行编译,在编译的过程当中,若是C/C++ 调用了Linux中的API,Cygwin就会利用cygwin1.dll 来编译 C/C++源代码,从而能够在windows下生成Linux下的lib...so文件web
2) 模拟Linux环境的工具集windows
下载地址:http://www.cygwin.com/bash
因为安装包过于庞大,因此官网只提供了在线安装程序进行下载,下面根据本身的系统选择相应的版本进行下载:工具
1) 双击刚刚下载的安装包打开,出现如下界面, 直接点击下一步,如图:学习
2) 选择安装方式: 若是你之前安装过而且有保存安装文件,能够选择第三个本地安装,因为我是第一次安装,在这里选择在线安装,如图:网站
3) 选择安装目录:在线下载安装的大小高达18.6G,若是C盘空间比较紧张的话,建议放在其余盘。ui
4) 选择下载文件存放路径:这些文件下载后会一直保留着,下次安装能够选择本地安装,就不用每次都是从网上下载,下载后的安装包大概5G(建议保留,下次能够直接本地安装)spa
5) 选择链接方式:在公司内网的话可能要设置下代理才能连上的话就选择第三项,不然选择第一项
6) 选择镜像网站:建议选择 http://mirrors.kernel.org速度会快一点,亲测。
7) 点击下一步后,出现下图,正在加载须要安装的项目
8) 等待加载安装项载入,选择安装项。点击All旁边的Default,如图:
9) 后面会弹出两次窗口,都点击肯定
10) 全部default变成了install后就能够点下一步
11) 接着开始进行环境要求预检测:
12) 会弹出一个窗口,说明解决依赖须要的的安装,继续点击下一步
13) 接下来就是进行下载和安装了,网速比较慢,建议晚上睡觉前进行下载安装,次日天亮就能够完成了(我当时用了12个钟)
14) 安装完成后,咱们能够经过桌面上的一下图标打开Cygwin程序,他是一个相似Linux的控制台程序,能够在里面输入Linux命令
15) 为Cygwin 配置环境变量
I. 点击新建按钮,新建一个系统变量, 变量名为 CYGWIN_HOME ,变量值为 你的Cygwin的安装路径 (因为我早已经配置好了,因此只展现编辑状态下的值给你们看)
II. 在系统变量Path中添加值 %CYGWIN_HOME%;. (注意最后面有.)在最开头,如图:
执行完上面的步骤后,咱们已经完成了安装步骤,下面咱们来执行验证下是否安装成功,同时验证一下makge和gcc(C语言编译器)的版本
1) 执行命令 gcc -v,结果输出以下:
2) 执行命令 make -v,结果输出以下:
到这里,咱们就能够肯定Cygwin已经安装完毕了。
如今虽然已经安装好了Android NDK 和Cygwin,可是他们都是独立的环境,要想使用Cygwin来编译基于Android NDK的C/C++程序的话,咱们还须要将Android NDK和Cygwin进行整合,下面直接讲解一下配置的步骤吧:
1) 打开 <Cygwin安装目录>\home\<你的用户名>\.bash_profile文件,而且在该文件中进行 NDK 环境变量的配置:
ANDROID_NDK_ROOT=/cygdrive/<NDK安装盘符>/<NDK安装路径>
export ANDROID_NDK_ROOT
例如我我的就是在 D:\DevTools\cygwin64\home\lenovo 路径下的 .bash_profile 文件中最后面配置了以下内容:
ANDROID_NDK_ROOT=/cygdrive/d/DevTools/JAVA/adt-bundle-windows/android-ndk-r9b
export ANDROID_NDK_ROOT
2) 保存改文件的修改内容而且从新启动Cygwin控制台
3) 执行命令 echo $ANDROID_NDK_ROOT ,输出输出咱们配置的NDK安装路径表示配置成功,如图:
下面,咱们以NDK中给出的hello-jni做为使用例子进行讲解,步骤以下:
1) 进入hello-jni文件夹或者他的任意一个父文件夹,如图,咱们直接经过cd命令进入 hello-jni 目录下
2) 直接执行命令 $ANDROID_NDK_ROOT/ndk-build 进行编译,输出如下结果表示编译成功
3) 如上图所示,咱们已经编译成功了,并且,咱们能够在\samples\hello-jni\obj\local\armeabi文件夹中看到编译后的动态连接库libhello-jni.so。