zoukankan      html  css  js  c++  java
  • [在windows上使用Unix工具]cygwin


    一 cygwin
    Cygwin 是一个用于 Microsoft® Windows® 操作系统的类 UNIX® 环境。它包含一个真正的 UNIX shell、一个 Portable Operating System Interface (POSIX) 模拟库以及数千个 UNIX 实用程序。

    作用:
    1)作为Linux/Unix的初学者,可以使用cygwin来在windows上模拟使用Linux/Unix;
    2)可以基于cygwin来从windows访问Linux/Unix;
    3)可以在Windows上模拟Linux的开发环境,比如使用GUN的编译和调试工具来做程序开发;
    4)可以基于cygwin中间层实现Linux/Unix应用程序到windows的无代码修改的移植;(cygwin dll实现了对windows底层API的Linux/Unix风格的封装)
    5)注意,cygwin中运行的Linux/Unix工具其实是这些工具的对应的windows的exe版本,cygwin不能直接运行Linux/Unix的应用程序;

    主页:http://cygwin.com/

    二 cygwin的安装
    Cygwin 是一个用于 Windows 的类 UNIX shell 环境。 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性;以及 Bash shell 的改写版本和许多 UNIX 实用程序,它们提供大家熟悉的 UNIX 命令行界面。前一个组件是一个 Windows 动态链接库 (DLL)。后一个组件是一组基于 Cygwin DLL 的程序,其中许多是用未经修改的 UNIX 源代码编译的。它们合在一起提供大家熟悉的 UNIX 环境。

    Cygwin使用安装向导程序setup.exe来实现cygwin的在线安装。 同时setup.exe文件可以重新安装软件,可以添加、修改或升级 Cygwin 配置的组件。

    在 Windows 系统上打开浏览器,通过访问 http://cygwin.com/setup.exe 下载 Cygwin 安装程序。安装程序本身非常小(大约 600KB),因为大多数 Cygwin 软件是在安装过程中下载的。完成下载之后,按照以下步骤安装 Cygwin:

      1 运行安装程序。
      
      2 单击 Next 进入下一个屏幕,选择要执行的安装类型。单击 Install from Internet
      3 单击 Next,然后选择一个安装目录。
         
      在大多数情况下,推荐的安装选项是合适的,也可以进行定制,但是要注意几点:
      1)不要在 Windows 系统的根目录(比如 C:)中安装 Cygwin。最好把 Cygwin 安装在它自己的子目录中,比如默认目录(C:\cygwin)或 C:\Program Files\cygwin。(您选择的目标目录将成为模拟的 UNIX 环境的根目录 /。例如,如果在 C:\cygwin 中安装,那么虚拟的 /usr/bin 实际上是 C:\cygwin\usr\bin) 。
      2)对于 Install For 选项,不要选择 Just Me。
      3)把 Default Text File 类型设置为 Unix,从而尽可能提高与其他 UNIX 机器上存储的现有文件的兼容性
      4 单击 Next。在下一个窗口中,选择一个存储 Cygwin 所需的数据的目录。不要选择前一步中选择的 Cygwin 目录。 如果可能的话,应该在有至少 1GB 空闲空间的驱动器上创建或选择一个目录。
      5 再次单击 Next,选择使用的 Internet 连接类型。通常应该选择 Direct Connection。
          6 再次单击 Next。稍等一会儿,Cygwin 会下载当前的镜像站点列表,让您选择一个镜像站点,
      
      如果不确定应该选择哪个站点,就选择地理位置比较近的站点。
      7 再次next, 经过短暂的延迟之后,安装程序显示可用的类别和包的完整列表。
      
      显示一个类别的部分内容。单击加号 (+) 展开对应的类别;单击 “循环” 标志在 Skip(忽略此包)和包的所有可用版本之间循环。如果 Cygwin 提供一个实用程序的多个版本,应该选择满足您的需求的实例。顺便说一下,如果选择 B 列,就会下载二进制包;选择 S,也会下载源代码。

    在 Cygwin 中可用的包超过 1,000 个,所以应该只选择您需要的类别和包。(安装所有 Cygwin 包会占用超过 800MB 的磁盘空间)。以后随时可以添加整个类别或单独的包:只需重新运行 Cygwin 安装程序。(还可以在任何时候用相同的安装程序删除或更新包)。

      8 选择您需要的工具之后,单击 Next,下载过程开始!
      

    进度条分别反映每个包的下载进度、总下载进度和磁盘使用量。

      9 最后,安装程序安装软件并(可选地)在 Start 菜单和桌面中添加快捷方式。单击 Finish

      10 通过使用 Start 菜单或双击 Cygwin 图标(如果添加了这些快捷方式的话),启动 Cygwin;也可以执行 Cygwin 目录中的 Cygwin 脚本(比如 C:\cygwin\Cygwin.bat)。

      

      显示第一次启动 Cygwin 时的情况:它创建您的主目录,执行 shell 启动文件,显示提示。现在可以运行 UNIX 命令了!

    三 cygwin使用
    你可以使用几乎所有的linux/unix命令来操作你本地的windows系统。哈哈!
    例如使用 df -h来查看你的磁盘的使用情况:

    Cygwin 安装目录作为虚拟 UNIX 系统的根目录。Cygwin 把安装目录中的子目录映射到 UNIX 目录。它以单独的卷的形式提供 Windows 驱动器,比如 /cygwin/c。可以使用这样的虚拟路径启动 Windows 程序。请尝试输入 /cygdrive/c/Program\ Files/Internet\ Explorer/IEXPLORE.EXE 从命令行启动 Windows Internet Explorer®。(还可以使用 Tab 键自动展开路径的元素) 。

    顺便说一句,如果要把 Windows 路径名转换为等效的 UNIX 路径名或者相反,可以试试内置命令 cygpath。在默认情况下,cygpath 产生 UNIX 路径名。使用 -w 选项产生 Windows 路径。

    $ cygpath -w /cygwin/c/Program\ Files/Internet\ Explorer/IEXPLORE.EXE
    c:\Program Files\Internet Explorer\IEXPLORE.EXE

    还有帮助沟通这两个环境的其他特性:

    • Cygwin 提供它自己的 lpr(/usr/bin/lpr 而不是 Windows 的 LPR.EXE),可以直接从模拟的 UNIX 环境进行打印。只需把 PRINTER 环境变量设置为 \\server\printer_name 或 //server/printer_name 这样的 Cygwin UNC;前向斜杠和反向斜杠都可以,在 Cygwin 中的其他地方也是如此。
    • 在 Cygwin 中用 ln -s 创建的符号链接在 Windows 中被解释为快捷方式。同样,Windows 快捷方式在 Cygwin 中被解释为符号链接。因此,可以使用 Windows 快捷方式带参数启动 UNIX 命令。
    • 因为 Cygwin 提供完整的 Bash shell,所以可以使用上述的所有兼容特性(和其他特性)编写 UNIX shell 脚本来维护 Windows!

      例如,可以使用 UNIX find 在驱动器上搜索数据。请注意一点:在 Windows 文件名中常常使用空格。为了保持完整的文件名(请记住,UNIX 参数以空格分隔),一定要使用 find -print0xargs -0

    更新和扩展 Cygwin

    正如前面提到的,在任何时候都可以通过运行 Cygwin 安装程序添加、删除和更新 Cygwin 类别和包。我们来添加几个软件开发包,以便像在传统的 UNIX 系统上那样从源代码构建程序。

    再次运行 Cygwin setup.exe 应用程序,依次通过前几个对话框,直到到达 Select Packages 窗口。展开 Devel 类别,使用循环控件选择以下包的最高版本:

    • autoconf2.1
    • automake1.10
    • binutils
    • gcc-core
    • gcc4-core
    • gdb
    • pcre
    • pcre-devel

    做出选择之后(为了满足依赖性,可能会自动选择其他包),单击 Next 开始更新。与前面一样,下载和安装过程需要一定的时间(开发包往往相当大)。

    在此期间,打开一个浏览器并通过访问 http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz 下载 GNU wget 实用程序的最新源代码。(wget 是一种命令行工具,它可以下载任何东西。使用 Cygwin 把此文件复制到 Cygwin 中的主目录,展开压缩文件。

    $ cp /cygdrive/c/Documents\ and\ Settings/Martin/My\ Documents/wget-1.11.4.tar ~
    $ tar xzvf wget-11.4.tar
    wget-1.11.4/
    wget-1.11.4/AUTHORS
    wget-1.11.4/NEWS
    wget-1.11.4/COPYING
    wget-1.11.4/configure.bat
    wget-1.11.4/ChangeLog
    wget-1.11.4/ChangeLog.README
    wget-1.11.4/msdos/
    wget-1.11.4/msdos/ChangeLog
    wget-1.11.4/msdos/Makefile.DJ
    ...
    wget-1.11.4/src/cookies.c
    wget-1.11.4/src/http.h
    wget-1.11.4/src/log.h
    wget-1.11.4/src/sysdep.h
    wget-1.11.4/src/alloca.c
    wget-1.11.4/src/getopt.c
    wget-1.11.4/src/gnu-md5.h
    wget-1.11.4/src/ftp.c
    wget-1.11.4/config.sub
    wget-1.11.4/config.guess
    $

    当 Cygwin 下载和安装过程完成时,单击 Finish。现在可以从源代码构建 wget 实用程序了。

    $ cd wget-1.11.4
    $ ./configure
    configure: Configuring for GNU wget 1.11.4
    ...
    creating po/Makefile
    $ make
    gcc -I. ...
    $ make install
    ...
    /usr/bin/install -c -m 644 ./wget.1 /usr/local/share/man/man1/wget.1
    $ type wget
    /usr/local/bin/wget

    为了测试这个新的实用程序,在 Cygwin 中运行它并下载 wget 源代码:

    $ /usr/local/bin/wget http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz

    稍后就会得到一个新的源代码压缩文件。使用 Cygwin 安装程序从 Cygwin 存储库获得实用程序是最简单的方法,但是也可以在 Cygwin 中构建下载的或自己的源代码。在 Cygwin 中可以使用全套 UNIX 开发工具,包括最流行的脚本编程语言。


    五 cygwin中实现linux程序到windows的移植和跨平台软件的开发

    如果您不喜欢 Microsoft Visual Studio® 等 Windows 开发工具,可以用 Cygwin 中的 UNIX 编译器和工具构建原生 Windows WIN32 应用程序。但是一般的大部分的使用情况我们是借助cygwin来实现Linux/Unix程序到windows的移植,或用来编写夸平台的应用。
    例如,我们可以在cygwin中使用vim来编写一个简单的hello.c的c文件:
    int main(void)
    {
      printf( "Hello World!");
    }
    然后我们输入编译指令:
    # gcc hello.c -o hello
    然后执行:
    # ./hello
    此时的hello运行正常且是一个windows的exe程序。你可以拷贝hello.exe和cygwin.dll到一个单独的目录,在windows去执行。

    但是当我们将以上的源文件hello.c拷贝的正真的Linux/Unix系统,然后重复上面的编译的执行指令,程序任然正常的运行,但是此时的程序已经是Linux/Unix的可执行格式。

    六 参考:http://www.ibm.com/developerworks/cn/aix/library/au-spunix_cygwin/index.html#resources

    完!

    作者:iTech
    微信公众号: cicdops
    出处:http://itech.cnblogs.com/
    github:https://github.com/cicdops/cicdops

  • 相关阅读:
    Kubernetes 系列(八):搭建EFK日志收集系统
    Kubernetes 系列(七):持久化存储StorageClass
    Kubernetes 系列(六):持久化存储 PV与PVC
    .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker
    Ocelot自定义管道中间件
    生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败
    .Net Core 商城微服务项目系列(十四):分布式部署携程Apollo构建配置中心
    IT人该如何未雨绸缪,不断提升自己的竞争力?同时尽量避免风险?
    Session跟Cookie简单的理解
    软件测试中高级面试提问
  • 原文地址:https://www.cnblogs.com/itech/p/1552345.html
Copyright © 2011-2022 走看看