`
zhangxiang390
  • 浏览: 214719 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Cygwin入门

阅读更多

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" 下看到。系统表
存在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快速入门

    cygwin快速入门 <br>详细细致地解答cygwin从安装到使用

    Cygwin使用指南

    Cygwin使用指南Cygwin使用指南Cygwin使用指南

    cygwin 快速入门

    安装cygwin必备,从中你可以对cygwin的安装过程得到很详细的了解,避免走不必要的弯路

    Cygwin使用方法

    Cygwin使用方法,包括:安装 Cygwin,及在 Windows 中发挥 UNIX 的优势,有图有真相,入门好方法!

    dfg.rar_cygwin sdl

    cygwin下的SDL程序演示说明,很好的入门程序

    cygwin的安装和简单配置

    cygwin的简单安装好配置. windows和linux各有其优越性,可以安装在同一台电脑上,但切换要重启。同时拥有两台电脑,一台装win,一台装linux,自然非常好,但具备此... 简单的讲述一下cygwin的安装和配置,入门级教程

    gcc makeFile入门(三)JNI.rar

    cygwin 下通过gcc编译dll文件,交给java调用

    shell入门经典资料

    Cygwin 環境 3.Bash shell 的結構 簡單的示範程式 打開執行權 執行 script 的方法 shell 使工作自動化容易 您一定可以學會它 本節習題 4.基本的命令 bash shell 的內建命令 echo cd pwd alias 命令列程式 date who ...

    Hadoop开发者第一期入门专刊

    24 在Windows 中使用Cygwin 安装HBase 28 Nutch 与Hadoop 的整合与部署 31 在Windows eclipse 上单步调试Hive 教程 38 Hive 应用介绍 42 Hive 执行计划解析 50 MapReduce 中的Shuffle 和Sort 分析 53 海量数据存储和...

    Hadoop开发者入门 pdf

    1 Hadoop介绍 2 Hadoop在国内应用情况 3 Hadoop源代码eclipse编译教程 ...24 在Windows中使用Cygwin安装HBase 28 Nutch 与Hadoop的整合与部署 31 在Windows eclipse上单步调试Hive教程 38 Hive应用介绍

    徐老师大数据 Hadoop架构完全分析课程 Hadoop入门学习视频教程

    -019.Hadoop在Win7下免Cygwin环境安装NativeBug解决与dexpot多桌面应用.mp4 -020.Hadoop架构分析之单节点体系.mp4 021.Hadoop架构分析之集群结构分析.mp4 022.Hadoop架构分析之HDFS架构分析.mp4 023.Hadoop架构分析...

    tcpreplay安装和使用

    tcpreplay安装和使用,tcpreplay的入门学习

    物联网实验报告.docx

    物联网实验 实验一 基础实验 1.1 串口调试组件实验 1.1.1 实验目的 在程序开发过程中,往往需要对编写的代码进行调试,前面介绍了通过LED进行调试的方法,该... 打开Cygwin开发环境 5. 在Cygwin界面中执行cd apps/De

    离散控制Matlab代码-DER_Book_Codes:该存储库随附有《离散弹性杆的运动学入门》一书。

    它不适用于Windows(您可以尝试使用cygwin或类似工具)。 不幸的是,该代码库没有得到积极维护。 它需要以下库。 我们已经注意到了已知可用的这些库的版本号。 提升1.47 TCLAP 1.2.1 LIBPNG 1.0.60 ZLIB 1.2.7 ...

    滑雪者:流行棋盘游戏的类似游戏的实现

    入门要生成和运行程序,请按照下列步骤操作: 光盘仓./deps.sh ./build.sh ./start.sh 浏览浏览器到 如果您使用的是Windows(Cygwin),则需要设置一些环境变量JAVA_PATH_SEPARATOR =“;” 和CYGWIN_PREFIX =“ C:\...

    一个Lex/Yacc完整的示例(可使用C++)

    参考资料:《Lex和Yacc从入门到精通(6)-解析C-C++包含文件》, http://blog.csdn.net/pandaxcl/article/details/1321552 其它文章和代码请留意我的blog: http://blog.csdn.net/huyansoft 2013-4-27

    electron-angular-meteor-ionic-starter-kit:阅读时...一个电子打包的应用程序,运行角流星,并应用了一些ionicframework样式

    Electrometeor [重新加载]入门套件 电子+流星+角流星+更少+离子样式+离子子 ##概述** [Electrometeor]( 将** [Electron]( 和** [Meteor]( ,以便您轻松创建可100%离线和在线使用的桌面应用程序。... Cygwin-

    dvda-author:免费的DVD-AUDIO创作工具

    1.快速入门 1.1从源代码构建工具链: ./autogen ./configure 在* nix平台下具有较高的权利: (sudo) make && (sudo) make install 修补的工具链源代码内嵌在git下载的存储库中。 如果您想使用vanilla软件包并...

    pro_android_cpp_with_the_ndk.pdf

    1.1.4 在Windows平台上下载并安装Cygwin 1.1.5 在Windows平台上下载并安装AndroidNDK 1.1.6 在Windows平台上下载并安装Eclipse 1.2 AppleMacOSX 1.2.1 在Mac平台上安装Xcode 1.2.2 验证Mac平台的Java开发包 1.2.3 ...

Global site tag (gtag.js) - Google Analytics