转:https://blog.csdn.net/yilovexing/article/details/51911252
本人为了学习标准C++,偶选择了眼下如日中天的Eclipse做为IDE,为了让Clipse支持C++开发,除了要下载个CDT插件外,就是要下载并安装Cygwin(或者MingW)了。岂料Cygwin这东西可不是那么好下载的,两个星期以来我反反复复下载了不下一百次,尝试了无数种方法,总是下载到百分之二十几时就下载失败,一番呕心沥血之后终于摸索出了正确的下载方法,并将最新版的Cygwin(共有500多兆)全部下载成功。期间经历的种种甘苦,至今回味无穷。为了能让大家也能分享我的经验,避免走类似的弯路,现在我将自己总结出的Cygwin下载安装心得写出来,供感兴趣的人士参考,也是给自己做个纪念。
1. 下载、运行安装向导文件
一开始的下载方法,了解Cygwin的人都知道:就是到 : http://www.cygwin.com 中先当个安装向导文件setup.exe,这个是Cygwin的官方下载安装向导文件,而且也只能通过它才能正确下载最新的Cygwin版本(为何?稍后有说明)。
setup.exe下载完毕,双击运行,程序安装向导界面如下图所示:
点击“下一步” 继续,准备选择Cygwin的安装方式。
2. 选择安装方式
如上图所示,一共有三种安装方式:
(1)Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。
(2)Download Without Installing:只是将安装文件下载到本地,但暂时不安装。
(3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。
强烈建议选择第(2)项,以便于能够手工指定安装路径。然后再点击”下一步“。
3. 设置安装文件的本地存储路径
由于我们选择的是直接下载的安装方式,所以必需指定好一个本地下载文件存储目录。安装目录所在的驱动器剩余空间必须足够(若要完全下载,至少需要600M以上的空间)。设置好后,点击“下一步”。
4. 选择连接方式
如上图所示,共有三种连接方式选择:
(1)Direct Connection:直接连接。
(2)Use IE5 Settings:使用IE的连接参数设置进行连接。
(3)Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址和端口号)。
用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后再点击“下一步”。
5. 选择下载站点
经过一番搜索,安装向导为我们列出了众多可用的下载镜像站点以供选择,有HTTP的也有FTP的。说实话,这些站点我几乎都试过了一遍,真正能用的能给我留下深刻印象的寥寥无几。这里我只推荐一个站点:http://mirrors.kernel.org,又快又稳定。用户也可以自由决定倒底用哪个站点进行下载。另外,几个后辍为“.jp”的站点也还过的去,但不推荐。为啥?因为那是小日本的站点。
言归正传,选择好了没? 好, 点击“下一步”,向导会显示下图所示的信息:
注意!这并不是正式的下载,而只是安装向导从下载镜像站点上获取压缩过的安装列表文件。这个安装列表文件是Cygwin统一指定的,并随着新版本的发布而更新。安装向导就是通过它来得知究竟可以下载什么不能下载什么。并且该下载列表文件中还有包含有每个下载文件的MD5验证码,非常重要。
6. 选择所要下载/安装的安装包内容
安装列表文件下载完毕,向导会显示列表中的内容,供用户自由选择倒底需要下载哪些安装包。如何选择呢?只需用鼠标点击每个安装包名后面那个循环箭头图标即可:图标后面的文字是表示究竟对该安装包采取何种下载/安装方式,并随着点击而不断变化,共有这么几类:
(1)Default:这是默认选择,表示只下载/安装该包的缺省安装项(可点击包左边的+号展开,看看缺省安装究竟是些什么内容)。
(2)Install:表示要下载/安装该包的全部内容。所要求的空间也最大。
(3)Reinstall:表示重新下载/安装该包的内容(以上一次正常下载/安装时所选择的内容为准)。这个选项非常有用,稍后在下篇中会有说明。
(4)Uninstall:这个就不用解释了吧。
用户可根据自己的实际需要,来准定究竟下载/安装哪些内容。推荐选择“Install”方式,一步到位,免得日后被各种这样那样的问题所困扰。
至于窗口顶部那些“Keep”、“Prev”、“Curr”、“Exp”等等选项,只是用来改变当前树结构的显示方式的,对下载/安装没有什么影响。用户可以用默认的“Exp”。然后点击“下一步”,就要开始正式进行下载啦。
7. 下载
上图所显示的,就是下载进度窗口。可以看到当前下载的文件名称、文件大小、下载进度、总体下载进度等等关键信息。若当时选择的是Install方式以便下载全部文件,则下载时间会比较长,这时用户大可睡个觉或者干点其他事情。慢慢等吧。
如果用户的运气足够好,也许能够一次性的下载成功。若真能这样,恭喜恭喜!但如果你和我一样不幸,比如突然弹出下面这样一个窗口:
或者,有更倒霉的,像下面这样:
一个文件已经下载了98%,整个进度已进行了16%,向导却像死掉了一样,一动不动了。更有甚者,有一次我总体进度已经到了99%了,结果就僵在那里了。那怕你等上个一天一夜,向导仍旧是一动不动(偶就曾这么傻傻的等过,呵呵)。
我想这时候的你一定急的直跳:怎么了?怎么回事?怎么办?难道要我全部重新来一遍?但若重新来一遍,就一定能保证能成功吗?。。。。。
不必担心,有了本人的无数次下载尝试失败做为铺路石,你只需看本文的下篇:Cygwin完全下载指南(下)-中断下载续传篇,就能找到答案了。
上篇我们已经遇到个难题,就是Cygwin还没全部下载完全,向导程序就自己罢工不干了。怎么办? 继续等待?重新再来一遍?换个下载镜像站点?。。。都不是好办法,不保险啊。最好的办法,就是能让向导程序在上次异常中止的地方重新开始下载,继续下载。也就是类似于FTP的断点续传功能。
Cygwin的安装向导程序能够实现该功能吗?能!而且干的还挺漂亮,只不过。。。相应的设置实在是太古怪了,简直有误人子弟之嫌!我在尝试的时候,有N 回都已经几乎摸到门把手了,但就是因为心想:怎么可能会是这种配置呢?决对不行的!。。。。结果,像瞎子一样继续在黑暗中摸索了很久,才找到了出口。其中得出的教训远比得到的经验深刻~~~~闲言少叙,言归正传。
一但用户在下载过程中碰到了这种情况,不能浪费时间继续等待,因为那时安装向导实际上已经被中止了和站点的连接,只是它仍在那里不停的循环,不停的徒劳的尝试而已。我们唯一要做的也是唯一能做的,就是点击“取消”按钮,关闭该向导!不要心疼已经下载的那部分安装文件,不用担心,已经下载完毕的文件不会消失,而且还仍将有用。
关闭向导程序后,再重新运行它(一定要用你原先用的那个,而不能重新再当一个), 一路“下一步”下去(详细步骤可参阅上篇的内容,但要注意的是,进行本地下载存储路径设置时,必须和原先下载时的设置保持一致!),直到出现下图所示的站点选择窗口:
这时候,千万千万别去选择其他站点!对,仍旧选择你第一次下载时选择的那个!而且,向导程序也会根据你的下载日志,自动获得并定位到该镜像站点上。所以,这时你唯一要做的,就是点击“下一步”。
熟悉的安装包下载选择界面又出现了,如下图所示。
这个时候,要进行的设置就非常关键了:把ALL后面的Install改为Reinstall!哈哈,是不是有点什么想法了?对!Reinstall方式在安装时是表示重新安装,但在下载的时候表示的就是继续下载!这时我就不能不骂Cygwin安装程序的制作者了:你丫的程序界面怎么不设计的友好点?既然我前面选择是“Download Without Installing”,那你好歹在这项设置里面,把Install/Reinstall改换成Download/Continue Download才是啊。
好了不说了,都“Reinstall”了没?好,点击“下一步”。
向导程序现在已经知道你要继续上次的一载/续传了,它就会根据已经生成好的下载日志文件,对现有已经下载好的文件逐个做一把MD5校验码的Checking(如下图所示),确定已下载的部分没有任何问题。
不用点“下一步",向导程序会自动切换到下载界面中。
看看下图,看到了吗? 这一次的下载可不是从a字头的文件开始,而是直接从g字头的文件开始,哈哈!
恭喜,你可以长舒一口气了:原来如此!
需要说明的是,这时候总的下载进度稍稍有不同:不再是整个下载的进度了,而是你剩余的需要下载的文件的进度。所以,当你看到一开始仍是0%时,大可不必担心。你原先下载的文件都在。
如果在续传时,安装向导程序又罢工了,只需将以上步骤重新来一遍即可,这种断点续传方式虽然土了点、怪异了点,可的确能保证你的下载能持续下去,直到全部 500多兆的Cygwin安装文件下载完成。至此,本下载指南算是完成任务了。至于如何安装,我这里就不凑热闹了,因为网上相关的文章多的是,随便搜一下就有一大堆。大家自己看吧,安装其实蛮简单的。
这次Cygwin下载磨难记,我更加验证了我自己的一宝贵信条:只要有一线希望,就绝不放弃!无论如何都不要放弃!你也许会说,傻B了吧,为何不直接下载 GCC包或者是MingW呢,一样可以让Eclipse支持C++开发啊。可是我想要下载Cygwin是有原因的:因为Cygwin是Win平台下的UNIX模拟环境,我们公司现在的服务器端就建立在HP-UX平台之上,通过Cygwin,我可以直接在现有环境境中初步学习UNIX相关知识,而不用对自己现在的电脑大动干戈。一箭双雕,何乐不为?
========================
顺便提醒一下:
(1)在用户指定的本地存储路径内,安装向导程序会生成类似这样的一个目录:http%3a%2f%2fmirrors.kernel.org%2fsources.redhat.com%2fcygwin,这就是你下载文件的真正所在目录。还会生成两个日志文件:setup.log和setup.log.full, 用户感兴趣的活,可以打开来看看,对了解Cygwin的下载机制有不少帮助。
(2) 如果用户线路不是很好的话,可选择晚上11:00以后至早上8:00点这一段时间,进行Cygwin的下载,那时候人少,连接比较稳定,速度也有保证:我在下载时,曾达到了180KB/s的高速,这对于连接一个国外下载站点来说,已经是相当快的了。
安装Cygwin
还是依然点击setup.exe这个程序,不过这次我们选择的是:"Install From Local Directory",如图:
接着选择安装的目录,我这里是"D:/ProgramFiles/Cygwin",如图所示:
再接下来呢,选择的就是你下载回来的Cygwin包的路径了,而我这里路径是"D:/Tools/cygwin",如图所示:
可能有朋友无法确定自己的安装路径,其实很简单,本地安装包路径就是setup.ini这个文件所在的文件夹。
紧接着的安装组件还是和之前一样,全部选择为install。点选下一步之后,就等着漫长的安装过程的结束吧,如下图所示:
5. 设置环境变量
安装完毕之后,为了能够方便编译NDK,最好是设置相应的环境变量。打开cygwin的安装目录下的home文件夹,然后进入到相应的用户名中,如果你发现该用户名下有.bash_profile文件,那么接下来就简单多了,直接用记事本打开该文件,然后在文件末尾添加如下文字:
#创建NDK的路径,在windows中我的路径为:D:/ProgramFiles/Android/NDK
NDK_ROOT=/cygdrive/D/ProgramFiles/Android/NDK
#添加到PATH环境变量中
export NDK_ROOT
保存之后,打开cygwin,在命令行输入:cd $NDK_ROOT。这里注意,不像windows下的CMD,这里一定是区分大小写的。如果不出意外,就会进入到我们NDK的安装目录了。
如果相应的用户名文件夹中没有改文件,可能问题就没那么简单了。如果你在该用户名下建立一个.bash_profile ,并添加了相应的文字,然后如上面所说一切正常的话,那么恭喜你!但事实上,往往不是那么顺利。很可能你会发现,即使我们在用户名下建立了该文件,但似乎环境变量根本没有成功设置。这个很可能是用户名所在的路径设置不对,要检验路径,直接在cygwin输入pwd即可。
比如,我安装完毕之后,输入pwd,画面显示:
这意味着,如果我将.bash_profile放到D:/ProgramFiles/Cygwin/home/Administrator 是没有任何作用的,而应该放到D:/WorkPlace !
那么,我们有没有办法更改这个目录呢?答案当然是可以,只要修改相应的环境变量即可。在"我的电脑"点击右键,然后按如下路径进行选择:属性 -> 高级 -> 环境变量。在上面或下面的框中,找到HOME这个环境变量,更改为相应的数值即可。更改之后,重启电脑,将.bash_profile拷贝到HOME变量指向的路径,启动cygwin,那么就可以生效了。这里需要注意,一定要重启电脑,否则这HOME变量之前的数值可能还会影响到cygwin。
更改HOME变量数值之后,输入pwd,很明显看出,路径已经改变,NDK_ROOT变量也起作用了,如图:
6. 编译程序
接下来,我们就来编译一个程序试试。
首先,在cygwin命令行界面进入到D:/ProgramFiles/Android/NDK/samples/hello-jni路径。如果对命令行不熟悉的朋友,可以输入如下命令:cd /cygdrive/D/ProgramFiles/Android/NDK/samples/hello-jni
然后输入"$NDK_ROOT/ndk-build"进行编译。$NDK_ROOT是之前在.bash_profile设置的环境路径,而ndk-build是调用NDK的编译工具。如果不出问题,它会生成一个libs目录,并且编译生成的.so文件也会悉数在此,如下图所示:
启动配置好的android的java开发环境,比如说Eclipse + CDT,然后创建一个Android项目,选择Create project form existring source location =D:/ProgramFiles/Android/NDK/samples/hello-jni,确认后即可开始编译并生成apk文件,然后运行该程序即可。关于如何搭建Eclipse + CDT编译环境来编译android程序,我们下一篇文章再详解。
网友评论