cygwin 使用指南

cygwin工具学习记录 Cygwin提供了一个动态链接库(DLL),模拟了Linux下的核心接口和功能,包括一个大量的GNU和开源工具,使得Unix下的许多应用能够在Windows上编译和运行。如果您需要进行包管理,建议使用Cygwin自带的工具,或者尝试安装apt-cyg来管理Cygwin下的包。使用apt-cyg工具:在Cygwin中,apt-cyg是一个非常便利的命令行工具,可以用来搜索、安装、删除和更新Cygwin包。由于自动安装失败,您可以尝试手动下载lynx的安装包,并通过Cygwin的安装器进行安装。 阅读详情
  cygwin   使用指南
  作者:yansm  
  根据cygwin   user   guide翻译整理,希望对大家有所帮助。有错误清指出。  
  1   引言  
      cygwin是一个在windows平台上运行的unix模拟环境,是cygnus   solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操 作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非 常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。本文将对其作一介绍。  
  2   机理  
        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.  
  3   安装设置cygwin  
  3.1   安装  
      要安装网络版的cygwin,可以到http://cygwin.com,点击"Install   Cygwin   Now!"。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。按照每一屏的指示可以方便的进行安装。  
  3.2   环境变量  
      开始运行bash之前,应该设置一些环境变量。cygwin提供了一个.bat文件,里面已经设置好了最重要的环境变量。通过它来启动bash是最安全的办法。这个.bat文件安装在cygwin所在的根目录下。   可以随意编辑该文件。  
      CYGWIN变量用来针对cygwin运行时系统进行多种全局设置。开始时,可以不设置CYGWIN或者在执行bash前用类似下面的格式在dos框下把它设为tty    
                          C://>   set   CYGWIN=tty   notitle   glob    
   
      PATH变量被cygwin应用程序作为搜索可知性文件的路径列表。当一个cygwin进程启动时,该变量被从windows格式(e.g.   C://WinNT//system32;C://WinNT)转换成unix格式(e.g.,   /WinNT/system32:/WinNT)。如果想在不运行bash的时候也能够使用cygwin工具集,PATH起码应该包含x:// cygwin//bin,其中x://cygwin   是你的系统中的cygwin目录。  
        HOME变量用来指定主目录,推荐在执行bash前定义该变量。当cygwin进程启动时,该变量也被从windows格式转换成unix格式,例如,作 者的机器上HOME的值为C://(dos命令set   HOME就可以看到他的值,set   HOME=XXX可以进行设置),在bash中用echo   $HOME看,其值为/cygdrive/c.  
      TERM变量指定终端型态。如果美对它进行设置,它将自动设为cygwin。  
      LD_LIBRARY_PATH被cygwin函数dlopen()作为搜索.dll文件的路径列表,该变量也被从windows格式转换成unix格式。多数Cygwin应用程序不使用dlopen,因而不需要该变量。    
  3.3   改变cygwin的最大存储容量  
  Cygwin程序缺省可以分配的内存不超过384   MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为 需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下:  
  regtool   -i   set   /HKLM/Software/Cygnus//   Solutions/Cygwin/heap_chunk_in_mb   1024  
  regtool   -v   list   /HKLM/Software/Cygnus//   Solutions/Cygwin  
  4   使用cygwin  
  这一段讲一下cygwin和传统unix系统的不同之处。  
  4.1   映射路径名  
  4.1.1   引言  
  cygwin同时支持win32和posix风格的路径,路径分隔符可以是正斜杠也可以是反斜杠。还支持UNC路径名。(在网络中,UNC是一种确定文件 位置的方法,使用这种方法用户可以不关心存储设备的物理位置,方便了用户使用。在Windows操作系统,Novell   Netware和其它操作系统中,都已经使用了这种规范以取代本地命名系统。在UNC中,我们不用关心文件在什么盘(或卷)上,不用关心这个盘(或卷)所 在服务器在什么地方。我们只要以下面格式就可以访问文件:  
    ////服务器名//共享名//路径//文件名  
  共享名有时也被称为文件所在卷或存储设备的逻辑标识,但使用它的目的是让用户不必关心这些卷或存储设备所在的物理位置。)  
  符合posix标准的操作系统(如linux)没有盘符的概念。所有的绝对路径都以一个斜杠开始,而不是盘符(如c:)。所有的文件系统都是其中的子目录。例如,两个硬盘,其中之一为根,另一个可能是在/disk2路径下。  
  因为许多unix系统上的程序假定存在单一的posix文件系统结构,所以cygwin专门维护了一个针对win32文件系统的内部posix视图,使这 些程序可以在windows下正确运行。在某些必要的情况下,cygwin会使用这种映射来进行win32和posix路径之间的转换。  
  4.1.2   cygwin   mount表  
  cygwin中的mount程序用来把win32盘符和网络共享路径映射到cygwin的内部posix目录树。这是与典型unix   mount程序相似的概念。对于那些对unix不熟悉而具有windows背景的的人来说,mount程序和早期的dos命令join非常相似,就是把一 个盘符作为其他路径的子目录。  
  路径映射信息存放在当前用户的cygwin   mount表中,这个mount   table   又在windows的注册表中。这样,当该用户下一次登录进来时,这些信息又从注册表中取出。mount   表分为两种,除了每个用户特定的表,还有系统范围的mount表,每个cygwin用户的安装表都继承自系统表。系统表只能由拥有合适权限的用户 (windows   nt的管理员)修改。  
  当前用户的mount表可以在注册表"HKEY_CURRENT_USER/Software/Red   Hat,   Inc./Cygwin/mounts   v<version>"   下看到。系统表    
  存在HKEY_LOCAL_MACHINE下。  
  posix根路径/缺省指向系统分区,但是可以使用mount命令重新指向到windows文件系统中的任何路径。cygwin从win32路径生成 posix路径时,总是使用mount表中最长的前缀。例如如果c:被同时安装在/c和/,cygwin将把C:/foo/bar转换成 /c/foo/bar.  
  如果不加任何参数地调用mount命令,会把Cygwin当前安装点集合全部列出。在下面的例子中,c盘是POSIX根,而d盘被映射到/d。本例中,根是一个系统范围的安装点,它对所有用户都是可见的,而/d仅对当前用户可见。  
  c://>   mount  
  f://cygwin//bin   on   /usr/bin   type   system   (binmode)  
  f://cygwin//lib   on   /usr/lib   type   system   (binmode)  
  f://cygwin   on   /   type   system   (binmode)  
  e://src   on   /usr/src   type   system   (binmode)  
  c:   on   /cygdrive/c   type   user   (binmode,noumount)  
  e:   on   /cygdrive/e   type   user   (binmode,noumount)  
  还可以使用mount命令增加新的安装点,用umount删除安装点。  
  当Cygwin不能根据已有的安装点把某个win32路径转化为posix路径时,cygwin会自动把它转化到一个处于缺省posix路径 /cygdrive下的的一个安装点.   例如,如果Cygwin   访问Z://foo,而Z盘当前不在安装表内,那么Z://将被自动转化成/cygdrive/Z.  
  可以给每个安装点赋予特殊的属性。自动安装的分区显示为“auto”安装。安装点还可以选择是"textmode"还是   "binmode",这个属性决定了文本文件和二进制文件是否按同样的方式处理。  
  4.1.3   其他路径相关信息  
  cygpath工具提供了在shell脚本中进行win32-posix路径格式转换的能力。  
  HOME,   PATH,和LD_LIBRARY_PATH环境变量会在cygwin进程启动时自动被从Win32格式转换成了POSIX格式(例如,如果存在从该win32路径到posix路径的安装,会把c://cygwin//bin转为/bin)。    
Cygwin 配置C/C++编译环境以及如何编译项目 Cygwin 配置C/C++编译环境,并给出示例演示如何使用Cygwin编译项目 阅读详情

相关推荐

cygwin(cygwin使用教程)

cygwin使用教程从使用角度来看:Cygwin就是一个Windows软件,该软件就是在Windows上仿真Linux操作系统。简而言之,Cygwin是一个在Windows平台上运行的 Linux模拟环境,使用一个Dll(动态链接库)来实现,这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在Windows下,可以想一下,在运行Windows的同时,也可以使用VI,BASH,TAR,SED等UNIX下的工具,这个VM虚拟机有很相同的原理,但是VM是虚拟多个,而Cygwin是同时使用Wi

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3062

cygwin和mingw的区别

Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等)

embededvc的专栏 5万+

Cygwin安装与配置实战指南:Windows下的Linux开发环境搭建

Cygwin是基于GNU Public License发布的开源项目,其核心目标是在Windows操作系统上提供一个类Unix的运行环境。它通过一个名为的动态链接库,将POSIX API调用翻译为等效的Windows API调用,从而实现系统级兼容。该DLL作为用户态与内核态之间的抽象层,不仅处理文件I/O、进程创建、线程同步等基础操作,还模拟了Unix信号(signal)、伪终端(PTY)和套接字(socket)等高级特性。

weixin_42584758的博客 1890

Cygwin 介绍与安装

Cygwin 介绍与下载安装

小青龍 的博客 3万+

Cygwin安装教程

Cygwin安装教程

小白学CS 2万+

Cygwin‌最新详细安装教程(附安装包)

Cygwin‌是一个在Windows平台上运行的类UNIX模拟环境,它是一个开源的免费软件,由Cygnus Solutions公司开发。Cygwin通过提供一个名为cygwin1.dll的动态链接库,实现了在Windows上运行Unix应用程序的功能。这个DLL拦截并重定向Unix系统调用,将其转换为Windows本机API调用,从而在Windows上模拟了一个类Unix的环境‌。

ZHOUPUYU的博客 2万+

Cygwin使用指南

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

weixin_33953384的博客 998

cygwin 使用指南

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

pangqiu的专栏 1199

Windows Cygwin 配置

配置Cygwin用于开发和拟Unix命令行

StriverLite的博客 5839

为什么使用cygwin及安装入门 + Bash Profile

介绍Cygwin并展示了如何安装Cygwin,之后介绍了Bash Profile以及一些好用的alias。

cyl_10的博客 2771

Cygwin简单使用(学习笔记)

Cygwin是一个在windows平台上运行的类UNIX模拟环境。

CCS_Jack的博客 4641

Cygwin 安装详解

Cygwin是GNU 和开源工具的大量集合,提供类似于 Windows 上的Linux 发行版的功能

xsfqh的专栏 5452
上一篇: 3年以上工作经验的工程师的中长期规划
下一篇: 分析:UGC将是移动互联网的新热点
sunrock
博客等级 码龄24年 124粉丝 59原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值