Cygwin的安装流程

最近,由于在接入tecent的ysdk,接着接着却发现ysdk的核心类库是使用c++来编写的,而且更悲催的是竟然是给的源码,没有编译啊。。。更悲催的是现在,在开发的sdk是使用eclipse来
开发的,而且无法安装ndk插件,同时时间比较紧急,下载cygwin来编译,时间来不及,多亏够意思的其他组同事,帮忙编译,度过难关。
之后,感到必须安装ndk,否则哪一天说不定会用到。
对于cygwin,忽然感到,好久没有使用,竟然不会安装了,所以感觉有必要记录一下怎么使用。
好久没有写博客了,准确来说好像还没写过几篇,希望以后坚持。
1,cgygwin安装
adt插件 :管理android sdk和相关的开发工具的
ndk插件:用于开发android ndk的插件,ADT版本在20以上的,就能安装ndk插件,另外ndk插件也集成了cdt插件。
也可以在线更新ADT,NDK工具,不过下载速度很慢,下载链接见: http://developer.android.com/sdk/index.html
Ndk版本在r7以上之后就集成了cygwin,而且还是十分精简的。 比起下载Cygwin要方便多啦!下载链接见:  http://developer.android.com/tools/sdk/ndk/index.html  
1.1安装cygwin。
在安装cygwin之前们先说一堆废话,这些废话对于你想要快速的安装和使用cygwin没有任何的影响,完全可以跳过废话。看下面的东西,这些废话只是在以后的某一天,你想要更深入的理解什么是cygwin才会起到一些作用的。
/////////////////////////////////////////////////////////////////////////////////////////////
好了言归正传,首先,是什么是cygwin?
1,简言之,cygwin是一个在windows平台下运行的一个类unix模拟环境。详细说就是,你懂的。

Cygwin是许多软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上. 

    cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的 交叉编译器来生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。

2、NDK和cygwin
由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用。通过它,你就可以在不安装linux的情况下使用NDK来编译C、C++代码了。
所以,对于使用window开发的android同志们来说,当在开发中使用到jni,我们需要使用编译环境将代码编译成android系统可以使用的.so库,而这些在linux系统上是不必要的,对于windows的baby来说,确实不可避免的的。
而NDK又是什么呢?NDK  是在sdk前面加上了原生二字,也就是 Native Development Kit,因此被google成为NDK。
而android运行在dalvik虚拟机里,而NDK允许用户使用类似与c/c++的原生代码语言执行程序。那么ndk是有什么组成的:
1,从c/c++生成源代码库所需要的工具和build files。
2,将一致的原生库嵌入可以在android设备上部署的应用的应用包文件(application packages files,也就是.apk文件)中;
3,支持未来的android平台的一系列原生系统头文件和库。
这里我们会产生一个疑问,为什么会用到ndk呢,难道它有着什么不可替代的作用吗?
有以下几点:1,代码的保护,由于apk的java层代码很容易被反编译,而c/c++的被反编译的难度较大,
2,在NDK中调用第三方的c/c++库,因为大部分的开源库都是用c/c++写的。
3,便于移植,用c/c++编写的库可以方便的在其他的平台移植再次使用。
为什么需要使用cygwin? 可以参考下面这个。
看着个,http://blog.csdn.net/piaomiaoju/article/details/9019645
/////////////////////////////////////////////////////////////////////////////////////////////
1.2 首先需要从官网上下载cygwin(http://www.cygwin.com/ ),在官网上可以选择32位或者64位的使用。
Cygwin的安装流程_第1张图片
下载完cygwin,就可以选择安装。
1.3 双击setup.exe弹出这样的界面。
Cygwin的安装流程_第2张图片
点击下一步,会出现如下的三种可选择的安装方式
Cygwin的安装流程_第3张图片
第一种安装方式是从网络上下载文件并安装,安装文件而且会被保存以便再次使用。
第二种安装方式是从网络下载但是不安装。(这个感觉挺少用的。)
第三种安装方式是在你的本地已经有安装文件,这种方式无疑是最快的安装方式,但是前提是你需要有文件存在,不然还是老实的dowload吧。
首先看第一种安装方式,点击下一步,
Cygwin的安装流程_第4张图片
会有cygwin安装的根路径配置,继续点击下一步,
Cygwin的安装流程_第5张图片
然后是cygwin的安装文件的路径配置。继续点击下一步,
Cygwin的安装流程_第6张图片
显示网络的设置,因为需要从国外下载,所以的如果有代理可以设置代理,没有的话就选择第一项,然后waiting...downloading....
继续下一步,要等一下。
Cygwin的安装流程_第7张图片
然后是网络镜像的选择,推荐使用
http://mirrors.163.com/cygwin/ 网络镜像,
至于原因的话可以参考这个帖子
http://blog.csdn.net/superbinbin1/article/details/10147421
继续点击下一步,好了你可以等待了。。
Cygwin的安装流程_第8张图片
之后会出现这个界面来选择安装工具包,
Cygwin的安装流程_第9张图片
对于这样的界面,我只能说我已经看已经看花眼了,该怎么选择呢?
其实我们需要的是这个Devel 和Shells ,Devel有我们需要的开发工具,而shells是模拟环境下的命令行工具,更多的选择就是根据需要选择,一般情况下,好像这两个够用了
然后我们点击Devel & Default条目,Default 会变为install,还有Reinstall,Uninstall的选择,

选中两个为Install,之后就可以开始下载等待了。
然后第二种安装方式,第二种方式和第一种基本一样的。
至于第三种的local安装方式,主要是install file安装文件,也就是第二个配置路径的文件非常耗时,如果本地存在这个文件的话,就可以直接使用本地安装。
和第一种不同的是在配置好cygwin的根安装路径后,点击下一步,
Cygwin的安装流程_第10张图片
这里的路径配置要选择已经下载好的cygwin安装文件所在的路径,其他的都是基本一样的,跳过了下载的过程。
到这里基本上安装过程完成后,会在桌面出现一个Cygwin Terminal的图标。
在安装完cygwin后,还需要从android的官网上下载NDK。
2,cygwin的ndk-build环境配置
在安装和下载完cygwin后,需要去使用cygwin。
首先在cygwin中输入make -version,如果输出了GNU的版本号,那么cygwin就是安装成功了。

在编译jni的时候我们需要使用ndk的一个ndk-build的命令,以本机为例,ndk-build的命令所在位置是
D:\sdk\ndk-bundle\build,在ndk-bundle的build目录下面。
那么,我们直接在cygwin输入ndk-build的命令是否管用呢?

好吧,是没有任何的作用的。
然后我们需要进入到ndk-build所在路径下来使用呢?
首先进入到根目录下面, cd / ,然后使用ls命令来查看目录结构,
Cygwin的安装流程_第11张图片
然而,并没有看到我们在windows下面比较熟系的磁盘结构,但是会看到有一个cygdrive的目录,进去看下会有什么吧
Cygwin的安装流程_第12张图片
然后我在cydrive目录下面看到了C盘和D盘。继续我们进入到ndk-build的路径下来使用ndk-build命令来实验下吧。
Cygwin的安装流程_第13张图片
然后,发现依然是相同的提示,好吧,我陷入了死局,该怎么解呢,然后我们来试下从build的上面一层路径下来调用ndk-build命令来使用呢。
Cygwin的安装流程_第14张图片
然后出现了下面的提示了,ok,好吧,当出现这个提示的时候,说明ndk-build命令使用成功了,恭喜。
但是如果我们每次都要这么的去调用的话是非常让人烦恼的。
所以我们来配置下cygwin的环境路径吧,这样的话可以在任何目录使用ndk-build命令。
配置cygwin的环境有两种方式。p
第一种,在cygwin安装的根路径下,进入到 :\cygwin64\home\\.bash_profile文件下,
有可能会碰到没有这个文件的情况,不过没事,没有的话从别处copy一份就可以了。在文件下面配置如下
export ANDROID_NDK_HOME=/cygdrive//build
export PATH=$ANDROID_NDK_HOME:$PATH
配置完后,再重启下cygwin.
但是使用命令还是./ndk-build吗?来试下。

是不可以的,那直接使用ndk-buld命令呢?
Cygwin的安装流程_第15张图片
好吧可以。这个原因我也有些疑惑,配置好环境后,命令就不同了只要记住区别就行了。
这个文件还有另外的一种配置方式。
NDK=/cygdrive//build
expor NDK
但是这个使用起来,你就会发现。。还是先看下吧。
不能直接使用ndk-build命了,先要使用cd $NDK,然后使用ndk-build命令吗?来看下。
Cygwin的安装流程_第16张图片
然后发现的结果是不行的,无奈啊,那么我们试下./ndk-build呢?
Cygwin的安装流程_第17张图片
好吧,是不是心中想要有千万草泥马飘过。当然,这是有原因的,只是我现在也还没有能懂。
接下来,来看第二种。
进入到cygwin下的:\cygwin64\etc\profile文件下。找到 PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"这个文件所在的位置,
在这个路径中配置添加ndk-build所在的文件路径。
PATH="/usr/local/bin:/cygdrive/d//build:/usr/bin${PATH:+:${PATH}}"
同时也需要重启cygwin.
输入ndk-build.
Cygwin的安装流程_第18张图片
ok,搞定。
3,eclipse环境集成ndk
在ADT 20版本以上就可以直接的安装ndk插件了。
如果你想要在eclipse中集成ndk插件,可以参考这个帖子 http://blog.csdn.net/angle_rupert/article/details/6094832。
在这里就不多说了。
而且Ndk版本在r7以上之后就集成了cygwin,而且还是十分精简的。所以cygwin对于我们来说可以不用费时间下载了。
好了,到此为止。ndk的使用和jni调用将放在下一次来说吧。

 











你可能感兴趣的:(android,android,cygwin,android,ndk,ndk)