Android学习之一:Cygwin简介
来源:互联网 发布:胶卷转数码 知乎 编辑:程序博客网 时间:2024/05/23 21:20
为了能够一窥Android底层的东东,还是要搭建编译Android的环境。虽有Ubuntu和Suse系统,无奈总感觉在不同的系统下切来切去很是不便。在Windows工作学习,要编译Android,就不得不用重量级的软件--Cygwin.
N久以前搞Qtopia的时候,曾经小用过一段Cygwin,不过那时只是使用别人搭建好的环境,自己却从未动手搞过。最近反反复复安装这个Cygwin,真是繁琐。要不是安装不全,就是下载不完全就挂掉了。写下来作为文档吧。
一、Cygwin简介
Cygwin是一个在windows平台上运行的unix模拟环境,是Cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。比如现在开发、移植Qtopia,Android。
Cygwin软件的作用是让Windows拥有Unix-like环境的软件。所以,GCC等编译器自然也就会包含在里面。不过,对于开发者,Cygwin是一个开发环境。而对于用户来说Cygwin是一个运行环境。
二、Cygwin机理
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上工作。更详细的关于cygwin实现的描述,请参考http://cygwin.com/cygwin-ug-net/highlights.html.
三、安装包的获得
Cygwin的官方网站为http://cygwin.com。国内站点为http://www.cygwin.cn..要安装网络版的cygwin,可以到http://cygwin.com或者http://www.cygwin.cn ,点击"Install Cygwin Now!"。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。按照每一屏的指示可以方便的进行安装。也可以选择下载到本地,然后再安装(可根据setup.exe的选项进行设置)。
官方的安装指南可参考http://www.cygwin.cn/site/install/
- Android学习之一:Cygwin简介
- Cygwin简介
- cygwin简介
- 基于cygwin学习linux 学习笔记之一:入门篇
- 【Android 入门之一】android简介
- []学习StepByStep之一:SQLServer2000简介
- 学习XML之一:XML 简介
- 【多线程学习】之一、线程简介
- OCR学习之一:OCR简介
- Javascript学习笔记之一简介
- python学习之一: python简介
- HTML5学习之一HTML5简介
- [android]组件之一Activity简介
- Android NDK学习笔记(不用cygwin)
- android Application学习之一
- android 学习笔记之一
- Android 学习之一
- android 学习记录之一
- 论文答辩中。。。
- Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
- Diffrent ways to travers buildetails of a build definition with vs 2005 and vs 2008
- PreparedStatement的用法及优点
- Hibernate 常见异常
- Android学习之一:Cygwin简介
- 软件操作界面设计-“让用户预测未来”
- 运放交流放大电路的分析和设计
- ExtJS的Valid事件调试
- Can't locate LWP/UserAgent.pm
- Android开发中如何执行POST请求
- struts2为Action配置method属性
- APXTADTC How to Setup Tax Codes [ID 198616.1]
- bash: ifconfig: command not found