当前位置:首页 > Windows程序 > 正文

unix/linux模拟环境[转]

2021-05-24 Windows程序

Cygwin是许多软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的 软件移植到Windows上(注:我可以在windows上开发,然后移植到Linux)。Cygwin移植工作在Windows NT、Windows 2000、Windows XP以及Windows Server 2003上比较好,在Windows 95和Windows 98上,相对差劲一些。Cygwin由Red Hat等负责维护。[1]

cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从linux到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。

 

2发展历史

Cygwin始于1995年,最初作为Cygnus工程师Steve Chamberlain的一个项目。当时Windows NT和Windows 95将COFF作为目标代码,而GNU已经支持x86和COFF,以及C语言库newlib。这样至少在理论上,可以将GCC重定向,作为cross compiler,从而产生能在Windows上运行的可执行程序。在后来的实践中,这很快实现了。

接下来的问题是如何在Windows系统中引导编译器,这需要对Unix的足够模拟,以使GNU configure的shell script可以运行,这样就用到像bash这样的shell,进而需要Fork和standard I/O。Windows含有类似的功能,所以Cygwin库只需要进行翻译调用、管理私有数据,比如文件描述符。

1996年后,由于看到cygwin可以提供Windows系统上的Cygnus嵌入式工 具(以往的方案是使用DJGPP),其他工程师也加入了进来。特别吸引人的是,Cygwin可以实现three-way cross-compile,例如可以在Sun工作站上build,如此就形成Windows-x-MIPS cross-compiler,这样比单纯在PC上编译要快不少。1998年起,Cygnus开始将Cygwin包作为产品来提供。

3组成

Cygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB),这样可以进行简单的软件开发;还有一些UNIX系统下的常见程序。2001年,新增了X Window System。

另外还有一个名为MinGW的库,可以跟Windows本地的MSVCRT库(Windows API)一起工作。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对POSIX规范的实现没有Cygwin库完备。

但糟糕的是,Cygwin不支持Unicode。实际上,除了当前Windows系统以及OEM codepages(例如,一个俄语用户,他的codepages是CP1251和CP866,而不能是KOI8-R、ISO/IEC 8859-5、UTF-8等),Cygwin对其他字符集都不支持。

Red Hat 规定,Cygwin 库遵守 GNU General Public License,但也可以跟符合开源定义的自由软件链接。Red Hat 另有价格不菲的许可协议,这样使用 Cygwin 库的专属软件,就可以进行再发布。

4工作机制

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上工作。

 

5安装

安装

cygwin的安装文件很容易通过google找到。目前国内的网站上有"网络安装版"和"本地安装版"两种。标准的发行版应该是 网络安装版。两者并无大不同,下面介绍一下安装的过程。

step1. 下载后,点击安装文件(setup.exe)进行安装,第一个画面是GNU版权说明,点"下一步(N)—>",

环境变量

开始运行bash之前,应该设置一些环境变量。cygwin提供了一个.bat文件,里面已经设置好了最重要的环境变量。通过它来启动bash是最安全的办法。这个.bat文件安装在cygwin所在的根目录下。 可以随意编辑该文件。

CYGWIN变量用来针对cygwin运行时系统进行多种全局设置。开始时,可以不设置CYGWIN或者在执行bash前用类似下面的格式在dos框下把它设为tty

C:\> set CYGWIN=tty notitle glob

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/70553.html