Cygwin安装、使用和软件更新

2023-11-19

http://www.ibm.com/developerworks/cn/aix/library/au-spunix_cygwin/

幸运的是,Cygwin(见 参考资料)在 Windows 环境中提供大家熟悉的一片天地,就像是美国人在法国找到了麦当劳。

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

在本期的 对话 UNIX 专栏中,我们要安装 Cygwin,讨论它的命令行界面 (CLI),并构建标准 Cygwin 发行版中未包含的开放源码,以此体会把 UNIX 应用程序(至少是一部分 UNIX 应用程序)迁移到这个模拟环境是多么容易。

版本详细信息

到编写本文时,Cygwin DLL 的当前版本是 1.5.25-15。可以在近期的任何 Windows 商业版本上安装 Cygwin,但是 Windows CE 除外。(但是,未来的 Cygwin 版本将不再支持 Windows 95、Windows 98 和 Windows ME)。本文给出的示例和图基于带 Service Pack 3 (SP3) 的 Windows XP Professional,使用的计算机是采用 Coherence 模式的 Apple MacBook,并使用 Parallels version 3.0。

安装 Cygwin

与这里介绍的其他软件不同,Cygwin 使用 Windows 安装程序。Cygwin setup.exe 文件可以重新安装软件,可以添加、修改或升级 Cygwin 配置的组件。

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

  1. 运行安装程序。图 1 显示 Cygwin 欢迎屏幕。 

    图 1. 在安装 Cygwin 期间出现的第一个对话框 
    Cygwin 欢迎屏幕
  2. 单击 Next 进入下一个屏幕,选择要执行的安装类型。
  3. 单击 Install from Internet
  4. 单击 Next,然后选择一个安装目录。

    配置安装的窗口见图 2。



    图 2. Cygwin 安装选项
    选择如何安装 Cygwin 

    在大多数情况下,推荐的安装选项是合适的,也可以进行定制,但是要注意几点:

    • 不要在 Windows 系统的根目录(比如 C:)中安装 Cygwin。最好把 Cygwin 安装在它自己的子目录中,比如默认目录(C:\cygwin)或 C:\Program Files\cygwin。(您选择的目标目录将成为模拟的 UNIX 环境的根目录 /。例如,如果在 C:\cygwin 中安装,那么虚拟的 /usr/bin 实际上是 C:\cygwin\usr\bin)。
    • 对于 Install For 选项,不要选择 Just Me
    • 把 Default Text File 类型设置为 Unix,从而尽可能提高与其他 UNIX 机器上存储的现有文件的兼容性。
  5. 单击 Next

    在下一个窗口中,选择一个存储 Cygwin 所需的数据的目录。不要选择前一步中选择的 Cygwin 目录。 如果可能的话,应该在有至少 1GB 空闲空间的驱动器上创建或选择一个目录。

  6. 再次单击 Next,选择使用的 Internet 连接类型。通常应该选择 Direct Connection。
  7. 再次单击 Next

    稍等一会儿,Cygwin 会下载当前的镜像站点列表,让您选择一个镜像站点,见图 3。如果不确定应该选择哪个站点,就选择地理位置比较近的站点。



    图 3. 选择您认为可靠的或地理位置比较近的安装站点 
    选择镜像站点 

    经过短暂的延迟之后,安装程序显示可用的类别和包的完整列表。图 4 显示一个类别的部分内容。单击加号 (+) 展开对应的类别;单击 "循环" 标志在 Skip(忽略此包)和包的所有可用版本之间循环。如果 Cygwin 提供一个实用程序的多个版本,应该选择满足您的需求的实例。顺便说一下,如果选择 B 列,就会下载二进制包;选择 S,也会下载源代码。



    图 4. 选择最适合需要的包和实例 
    选择包 

    在 Cygwin 中可用的包超过 1,000 个,所以应该只选择您需要的类别和包。(安装所有 Cygwin 包会占用超过 800MB 的磁盘空间)。以后随时可以添加整个类别或单独的包:只需重新运行 Cygwin 安装程序。(还可以在任何时候用相同的安装程序删除或更新包)。搜索 Cygwin 包列表(参见 参考资料),检查您喜欢的 UNIX 实用程序是否在 Cygwin 中可用。

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

    进度条分别反映每个包的下载进度、总下载进度和磁盘使用量。图 5 是在我的测试计算机上在安装期间截取的屏幕图。



    图 5. Cygwin 下载大量软件,所以请耐心等待 
    下载过程的屏幕图 

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

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

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



    图 6. 现在可以在 Windows 中使用 UNIX 命令了! 
    在 Windows 中运行的 UNIX shell 

    例如,试一下 ls -a 或 type touch。后一个命令表明 touch 是可执行文件 /usr/bin/touch。

回页首

在 Windows 中发挥 UNIX 的优势(反之亦然)

Cygwin 在 Windows 中几乎完整地模拟一个 UNIX shell。实际上,它把这两种操作系统很好地结合在一起了。例如,可以运行 df -h 命令显示 "UNIX" 机器上的空闲磁盘空间。图 7 显示结果。


图 7. 是 Windows 上的 UNIX 文件系统,还是 UNIX 上的 Windows 文件系统? 
Cygwin 中的文件系统清单

正如 前面提到的,Cygwin 安装目录作为虚拟 UNIX 系统的根目录。Cygwin 把安装目录中的子目录映射到 UNIX 目录。它以单独的卷的形式提供 Windows 驱动器,比如 /cygwin/c。可以使用这样的虚拟路径启动 Windows 程序。请尝试输入 /cygwin/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 -print0 和 xargs -0

回页首

如何更新和扩展 Cygwin

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

再次运行 Cygwin setup.exe 应用程序,依次通过前几个对话框,直到到达 Select Packages 窗口,见 图 4。展开 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 中的主目录,展开压缩文件。清单 1 显示压缩文件的内容。


清单 1. wget-1.11.4.tar 的内容

$ 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 开发工具,包括最流行的脚本编程语言。

如果您不喜欢 Microsoft Visual Studio® 等 Windows 开发工具,甚至可以用 Cygwin 中的 UNIX 编译器和工具构建原生 Windows WIN32 应用程序。(这些应用程序不在 UNIX 上运行。要想在 UNIX 上运行 Windows 应用程序,可以考虑使用 WINE。更多信息参见 参考资料)。

回页首

结束语

Cygwin 并不是完美的 UNIX 模拟环境,但已经相当好了。核心组件的文档很完善,而且特别方便,它们介绍了模拟 DLL 中的限制和安全风险。如果希望把复杂的 UNIX 包迁移到 Cygwin,请参考开发人员指南(参见 参考资料),评估 Cygwin 的支持是否能够满足您的 API 需要。

Cygwin 最棒的特性可能是它与 Windows 的集成。使用 Cygwin 和它的 UNIX 命令行来操纵系统可以大大提高生产力。建议在您的 shell PATH 变量中包含 Windows 的 Program Files 中的子目录,这样只需输入程序名,就能够启动路径中的任何二进制程序。

更棒的是,Cygwin 可以在同一个窗口中管理多个作业。按 Control-Z 可以暂停正在运行的作业;输入 bg 和 fg 分别在后台和前台运行作业;输入 jobs 管理作业列表。当然,Cygwin 还可以对输入和输出进行重定向,可以通过管道把一个命令的输出发送给另一个命令。

Cygwin 真的很不错。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cygwin安装、使用和软件更新 的相关文章

  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • Docker:处理 tar 文件时出错(退出状态 1):设置枢轴目录时出错:不是目录

    我是 Docker 新手 不知道是什么原因导致此错误或如何诊断它 任何有关此问题的具体帮助或有关首先检查何处以诊断此类问题的提示将不胜感激 我的 Dockerfile FROM java 8 Install maven RUN apt ge
  • Linux 桌面快捷方式和安装图标

    我需要添加什么到我的 spec文件来创建桌面快捷方式并在安装过程中为快捷方式分配一个图标 rpm 如果需要脚本 一个示例将非常有帮助 您在 Linux 下使用 desktop 文件作为图标 图标放置的位置取决于您使用的发行版和桌面环境 由于
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 使用 sigaction(),c

    我正在读一些关于sigaction 来源来自我的课程笔记 我不确定我是否理解这段文字 信号掩码仅在以下持续时间内计算和安装 信号处理程序 默认情况下 信号 sig 发生时也会被阻塞 使用 sigaction 为特定信号安装操作后 它会保持安
  • PostgreSql“运行安装后步骤...数据库集群初始化失败”

    我是一名 Windows 用户 我花了几个小时不断地安装和卸载 然后才使其正常工作 前 10 次左右才看到标题中的错误消息 我将其作为一个自我回答的问题放在这里 以防止其他人在安装时可能遇到同样的问题 并为像我这样第一次使用 Postgre
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 如何使用 python 在 Windows 中禁用/启用特定 USB 端口? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在图形窗口中创建一个切换开关 可以使用 python 禁用 启用 Windows 中的特定 USB 端口 我可以使用哪个外部命令或
  • 了解多个进程的并发文件写入

    从这里 UNIX 中文件追加是原子的吗 https stackoverflow com questions 1154446 is file append atomic in unix 考虑多个进程打开同一个文件并向其追加内容的情况 O AP
  • 使用带有curl 的内部字段分隔符

    当我做 ls IFS l 我得到了我期望的输出 当我做 curl IFShttp www google com 我不 我是否误解了内部字段分隔符 如何在不使用任何空格字符的情况下运行curl 命令 您需要将变量放在大括号内 否则 shell
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • Python 中的 Unix cat 函数 (cat * > merged.txt)? [复制]

    这个问题在这里已经有答案了 一旦建立了目录 有没有办法在Python中使用Unix中的cat函数或类似的函数 我想将 files 1 3 合并到 merged txt 我通常会在 Unix 中找到该目录 然后运行 cat gt merged

随机推荐

  • Golang适合高并发场景的原因分析

    典型的两个现实案例 我们先看两个用Go做消息推送的案例实际处理能力 360消息推送的数据 16台机器 标配 24个硬件线程 64GB内存 Linux Kernel 2 6 32 x86 64 单机80万并发连接 load 0 2 0 4 C
  • VBA-选择文件对话框

    打开选择路径对话框 strTitle 对话框标题名 strTypesDec 选择文件类型名 多文件名时用 连接 Images All files strExten 选择文件类型 一个文件名有多个读取类型时用 连接 多个文件名用 连接 gif
  • c++ extern的用处(转载)

    转自chao yu cnblog com 1 基本解释 extern可以置于变量或者函数前 以标示变量或者函数的定义在别的文件中 提示编译器遇到此变量和函数时在其他模块中寻找其定义 此外extern也可用来进行链接指定 也就是说extern
  • ext4 mballoc之buddy算法

    buddy bitmap 根据 Ext4文件系统介绍 理论篇 nginux的博客 CSDN博客 我们知道磁盘上有1block 大小 默认4K data block bitmap 每bit位代表一个block的使用情况 1代表占用 0代表空闲
  • 机器学习主题模型之LDA参数求解——变分推断+EM近似

    由上一篇可知LDA主要有两个任务 对现有文集确定LDA模型参数 的值 或对一篇新文档 根据模型确定隐变量的分布p z w 由于无法直接求出这个后验分布 因此可以考虑使用Laplace近似 变分近似 MCMC Gibbs采样法等算法求解 1
  • 如何解决Visual Studio 2017 运行后控制台窗口一闪就消失了

    安装使用Visual Studio 2017 后 用Ctrl F5运行程序 结果控制台窗口一闪就没了 也没有出现 press any key to continue 或者 请按任意键继续 出现这种原因 主要是建立工程时选用的是 空工程 Em
  • Spring Boot日志框架Log4j 2详解(干货)

    程序开发过程中 Log日志是发现问题和分析问题的利器 可以通过打印的Log可以快速的定位bug出现的原因 好的Log信息还会提供问题的解决方法 Spring Boot 默认使用的是logback日志框架 在性能方面Log4j2更优 Spri
  • FreeRTOS之系统配置

    1 FreeRTOS的系统配置文件为FreeRTOSConfig h 在此配置文件中可以完成FreeRTOS的裁剪和配置 在官方的demo中 每个工程都有一个该文件 2 先说一下 INCLUDE 开始的宏 使用 INCLUDE 开头的宏用来
  • Hbase数据库的安装

    Linux tar 命令 菜鸟教程
  • 编码GBK不可映射字符的三种解决方法

    当我们需要输出中文时 在DOS等运行和调试代码时会出现 study01 java 3 错误 编码GBK的不可映射字符 System out println 浠婂 鐨勬棩鏈熸槸锛 day 锛 或者中文编码错误 原因 Windows CMD和P
  • IP地址与int整数的转换

    将 IP 地址转换成 10 进制整数 例如 IP 地址为10 0 3 193 把每段拆分成一个二进制形式组合起来为00001010 00000000 00000011 11000001 然后把这个二进制数转变成十进制整数就是16777312
  • CTFShow-WEB入门篇--信息搜集详细Wp

    CTFShow WEB入门篇详细Wp 信息收集 web1 web2 web3 web4 web5 web6 web7 web8 web9 web10 web11 web12 web13 web14 web15 web16 web17 web
  • 微服务项目之项目简介

    目录 项目模式 技术栈 项目架构图 模块 主模块 项目模式 电商模式 市面上有5种常见的电商模式 B2B B2C C2B C2C O2O 1 B2B模式 B2B Business to Business 是指 商家与商家建立的商业关系 如
  • 软件设计师---程序设计语言

    程序设计语言 简介 编译程序和解释程序 真题 程序设计语言基本成分 真题 传值调用和传地址调用 代码实现 真题 编译 解释程序翻译阶段 真题 符号表 真题 编译过程概述 词法分析 语法分析 语义分析 目标代码生成 小结 真题 动态语义错误
  • Axure RP PC电商平台Web端交互原型模板

    Axure RP PC电商平台Web端交互原型模板 原型图内容齐全 包含了用户中心 会员中心 优惠券 积分 互动社区 运营推广 内容推荐 商品展示 订单流程 订单管理 售后及服务等完整的电商体系功能架构和业务流程 在设计尺寸方面 本套模板按
  • jquery之锚点定位和jquery模拟锚点定位效果,页面滚动到相对应的位置时,所在的导航文字高亮显示

    1 常见的锚点定位效果 a a div 或 a href print a div 这种方法 如果网页中有顶部固定导航栏 那么常见的锚点定位就会被遮住了一部分 很难用样式弥补 于是可以考虑第二种方法 js模拟锚点跳转效果 2 js模拟锚点跳转
  • @SpringBootApplication注解分析

    首先我们分析的就是入口类Application的启动注解 SpringBootApplication 进入源码 Target ElementType TYPE Retention RetentionPolicy RUNTIME Docume
  • Visual Studio和idea自用快捷键

    写代码不停的在键盘与鼠标之间切换真的是非常影响心情 多学点快捷键 一能服务自己 二能在妹子前耍帅 何乐不为 因为自己还是菜鸡一个 很多功能自己还用不到 所以先贴上几个自己常用的还有想用的吧 网上的太全了自己看着也不方便 VS Studio快
  • 详解qsort函数的使用及模拟实现qsort函数

    目录 引言 1 qsort函数简介 qsort函数原型 函数参数介绍 比较函数 compar 的编写 补充 void 类型的指针 2 qsort函数示例 2 1对int类型排序 2 2对char类型排序 2 3对浮点型排序 2 4对结构体类
  • Cygwin安装、使用和软件更新

    http www ibm com developerworks cn aix library au spunix cygwin 幸运的是 Cygwin 见 参考资料 在 Windows 环境中提供大家熟悉的一片天地 就像是美国人在法国找到了