Cygwin 3.1.0 发布了,Cygwin是相当多自由软件的相会,最先由Cygnus
Solutions开拓,用于各样本子的Microsoft
Windows上,运营UNIX类系统。Cygwin的重要指标是通过重复编写翻译,将POSIX系统(举个例子Linux、BSD,以致此外Unix系统)上的软件移植到Windows上。Cygwin移植职业在Windows
NT、Windows 2004、Windows XP以至Windows Server 2001上相比好,在Windows
95和Windows 98上,相对差劲一些。如今Cygwin由Red Hat等担负掩护。

自家想让作者的C ++项目跨平台,作者正在思虑使用Cygwin / MinGW。
不过他们之间有啥分别呢?

一 cygwin
Cygwin 是二个用来 Microsoft® Windows® 操作系统的类 UNIX®
蒙受。它包含叁个着实的 UNIX shell、三个 Portable Operating System
Interface (POSIX卡塔尔(قطر‎ 模拟库以致数千个 UNIX 实用程序。

新本子饱含:

另三个主题素材是,若无Cygwin / MinGW,笔者能还是不能够在系统上运转二进制文件?

作用:
澳门葡萄京官方网站,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的应用程序;

* cygwin-3.1.0-1
* cygwin-devel-3.1.0-1
* cygwin-doc-3.1.0-1

 Answers


Cygwin是尝尝在Windows上创造八个完整的UNIX / POSIX情况。
要做到那或多或少,它应用各个DLL。 就算那几个DLL被GPLv3
+覆盖,不过它们的执照包蕴二个特别 ,不会压迫派生的劳作被GPLv3
+覆盖。 MinGW是三个C / C
++编译器套件,它同意你创设Windows可推行文件而不依附于那样的DLL –
您只要求普通的MSVC运营时,那是Microsoft Windows符合规律安装的黄金年代有个别。

你也能够得到二个小的UNIX /
POSIX蒙受,用MinGW编写翻译成MSYS 。
它从不Cygwin的富有机能,但对此想要使用MinGW的程序员来讲是老大优质的。

用作一个简化,正是这么的:

  • 在Cygwin中编写翻译一些事物,然后编写翻译Cygwin 。

  • 编写翻译MinGW中的东西,你正在为Windows编译它。

关于Cygwin

Cygwin的指标是透过模拟许多基于Unix的操作系统提供的小细节,并由此POSIX业内来记录,使得基于nix的应用程序更便于移植到Windows上。
假设您的应用程序假定它能够利用Unix作用,比方管道,Unix风格的公文和目录访谈等等,那么你能够在Cygwin中编写翻译它,而Cygwin自个儿将用作你的应用程序的兼容层 ,那些特定于Unix的轨范能够持续利用,对应用程序举办相当少或无需更改。

只要你想为Cygwin编译一些东西并散发那些应用程序,那么你还必得将Cygwin运营时遭遇(由cygwin1.dll提供)与它一齐cygwin1.dll , 那对您可能行使哪体系型的软件许可有震慑 。

关于MinGW

MinGW是GNU编写翻译器工具的Windows端口,比如GCC,Make,Bash等等。
它不会考虑模仿或提供与Unix的一应俱全宽容性,而是提供在Windows上采纳GCC(GNU编写翻译器)和少些别的工具的最低须要境况。
它从不像Cygwin同样的Unix仿真层,可是结果是你的应用程序要求特意的编制程序本事在Windows上运转,那只怕代表假如它被创立为依据于在标准Unix意况中运维,使用Unix特有的作用,比方前面提到的功用。
暗中同意情状下,在MinGW的GCC中编写翻译的代码将编写翻译为本机Windows
X86对象,蕴涵.exe和.dll文件,可是也能够行使科学的安装开展接力编写翻译。
MinGW是Microsoft Visual C
++编译器及其涉及的链接/制作工具的开源取代品。

主页:

该版本富含部分新特色和 bug 修复,主要有:

存在分外复杂的跨平台框架,那使得将利用轻易移植到各类操作系统的职责成为恐怕

例如Qt框架卡塔尔国是跨平台利用的风行框架。
假若你从风流罗曼蒂克先河就使用那样的框架,那么您不仅可以够减削在移植到其余平台时遇见的分神,何况可以在富有平台上选用同样的图片窗口小零器件(窗口,菜单和控件)
GUI应用程序。

要增添到别的答案,Cygwin附带MinGW库和题目,您能够经过动用-mno-cygwin标记与gcc编写翻译而不链接到cygwin1.dll。
作者可心爱怜使用简易的MinGW和MSYS。

维基百科在这里做一个相比较。

从Cygwin的网站 :

  • Cygwin是四个贴近于Linux的Linux景况。
    它由两有的构成:贰个DLL(cygwin1.dll),充作Linux
    API仿真层,提供多量的Linux API作用。
  • 提供Linux外观的豆蔻梢头层层工具。

从Mingw的网站 :

MinGW(简单称谓“GNU for
Windows”)是五个可无需付费获取并可随机分发的Windows特定头文件和导入库的集中,与GNU工具集相结合,能够生成不注重任何第三方C运营时DLL的地头Windows程序

Cygwin使用DLL,cygwin.dll(恐怕风流洒脱组DLL)在Windows上提供相像于POSIX的运作时。

MinGW编译为本机Win32应用程序。

万风姿罗曼蒂克你用Cygwin营造一些东西,你安装它的任何系统也将必要Cygwin DLL。
MinGW应用程序无需另外例外的周转时。

开卷这么些回应的难点,精通Cygwin和MinGW之间的界别。

主题材料1:作者想制造叁个本身编写源代码的应用程序,编写翻译二回并在此外平台(比如Windows,Linux和Mac
OS X …)中运作它。

解答#1:用JAVA写你的源代码。 编写翻译叁回源代码并在别的地点运作。

难题2:笔者想成立三个自家编写源代码的应用程序,但平昔不其余难点,小编能够独家编写翻译任何平台的源代码(譬喻Windows,Linux和Mac
OS X …)。

答案2:用C或C ++写你的源代码。 只使用规范头文件。
为此外平台利用合适的编写翻译器(比如Windows的Visual
Studio,Linux的GCC和Mac的XCode)。
请注意,您不应当采用别的高等编制程序功效在全数平台上得逞编写翻译您的源代码。
假如你不使用C或C ++规范类或函数,则您的源代码无法在其余平新竹编写翻译。

主题素材#3:在主题材料#2的回答中,每种平台都难以使用不一样的编写翻译器,有未有跨平台的编译器?

答案3:是的,使用GCC编写翻译器。 那是三个跨平台的编写翻译器。
要在Windows中编译源代码,请使用为Windows提供GCC编译器的MinGW ,并将源代码编写翻译为本机Windows程序。
不要选取任何高端编制程序效用(如Windows API)在享有平台上成功编译源代码。
假设您使用Windows API函数,则您的源代码不会在任何平高雄编写翻译。

标题4:C或C ++标准头文件不提供任何高级编制程序成效,如十二线程。 作者能做什么?

答案4:您应该使用POSIX(便携式操作系统接口[用于UNIX])标准。
它提供了多数高等编制程序效率和工具。
好些个操作系统完全或局地POSIX包容(如Mac OS X,Solaris,BSD /
OS和…)。
一些操作系统,即便尚未正经认证为POSIX宽容,超级大程度上符合(如Linux,FreeBSD,OpenSolaris和…)。 Cygwin为Microsoft
Windows提供了多少个着力符合POSIX规范的开支和周转条件。

从而:

二 cygwin的安装
Cygwin 是一个用来 Windows 的类 UNIX shell 情况。 它由四个零部件组成:一个UNIX API 库,它模拟 UNIX 操作系统提供的大队人Matt色;以至 Bash shell
的改写版本和无数 UNIX 实用程序,它们提供大家熟知的 UNIX
命令行分界面。前一个构件是叁个 Windows 动态链接库
(DLL卡塔尔(قطر‎。后八个零件是生机勃勃组依据 Cygwin DLL 的次第,个中不菲是用未经修改的
UNIX 源代码编写翻译的。它们合在一齐提供我们耳濡目染的 UNIX 情状。

- Add 24 bit color support using xterm compatibility mode in Windows 10
  1703 or later.  Add fake 24 bit color support for legacy console,
  which uses the nearest color from 16 system colors.

- Support pseudo console in PTY. Pseudo console is a new feature
  in Windows 10 1809, which provides console APIs on virtual
  terminal. With this patch, native console applications can work
  in PTYs such as mintty, ssh, gnu screen or tmux.

- New APIs: sched_getaffinity, sched_setaffinity, pthread_getaffinity_np,
  pthread_setaffinity_np, plus CPU_SET macros.

- New APIs: dbm_clearerr, dbm_close, dbm_delete, dbm_dirfno, dbm_error,
  dbm_fetch, dbm_firstkey, dbm_nextkey, dbm_open, dbm_store.


What changed:
-------------

- FIFOs can now be opened multiple times for writing.
  Addresses: https://cygwin.com/ml/cygwin/2015-03/msg00047.html
             https://cygwin.com/ml/cygwin/2015-12/msg00311.html

- If a SA_SIGINFO signal handler changes the ucontext_t pointed to by
  the third parameter, follow it after returning from the handler.

- Eliminate a header file name collision with <X11/XLocale.h> on case
  insensitive filesystems by reverting <xlocale.h> back to <sys/_locale.h>.

- Allow times(2) to have a NULL argument, as on Linux.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00141.html

- Improve /proc/cpuinfo output and align more closely with Linux.

- Raise stackdump frame limit from 16 to 32.
  Addresses: https://cygwin.com/ml/cygwin/2019-11/msg00038.html


Bug Fixes
---------

- Fix select() on console in canonical mode.  Return after one line is
  completed, instead of when only one key is typed.

- Make console I/O functions thread-safe.

- Define missing MSG_EOR.  It's unsupported by the underlying Winsock
  layer so using it in send(2), sendto(2), or sendmsg(2) will return -1
  with errno set to EOPNOTSUPP and recvmsg(2) will never return it.

- Fix a timerfd deadlock.
  Addresses: https://cygwin.com/ml/cygwin/2019-06/msg00096.html

- Fix sigpending() incorrectly returning signals for unrelated threads.
  Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00051.html

- Fix a hang when opening a FIFO with O_PATH.
  Addresses: https://cygwin.com/ml/cygwin-developers/2019-06/msg00001.html

- Don't append ".lnk" when renaming a socket file.
  Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00139.html

- Make tcsetpgrp() return -1 if its argument is negative.
  Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00166.html

- Avoid mistakenly moving a process under debugger control into the
  process group of the debugger.
  Addresses a problem visible in GDB 8.1.1, related to
  https://cygwin.com/ml/cygwin/2019-07/msg00166.html

- Return ENOEXEC from execve for arbitrary files only if the files are
  executable.
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00054.html

- Fix off-by-one in environment evaluation leading to an abort.
  Addresses: https://cygwin.com/ml/cygwin-patches/2019-q3/msg00069.html

- Make output of /proc/[PID]/stat consistent with getpriority().
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00082.html

- 64 bit only: Avoid collisions between memory maps created with shmat
  and Windows datastructures during fork.
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00107.html

- Make rmdir fail if its argument is a symlink.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00221.html

- Fix an assertion failure on an invalid path.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00228.html

- If the argument to mkdir(2) or rmdir(2) is 'x:', don't strip the
  trailing backslash.
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00334.html

- Make spawnvp, spawnvpe fail if the executable is not in $PATH.
  Addresses: https://cygwin.com/ml/cygwin/2019-10/msg00032.html

- Fix parent/child relationship after parent dies.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00263.html

- Fix a security problem if Cygwin is installed into a path
  with spaces in it.
  Addresses: https://cygwin.com/ml/cygwin/2019-11/msg00018.html

- Fix an assertion failure when /cygdrive contains an offline network
  drive.
  Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00016.html

- Fix return value of ilogbl for 0 input.
  Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00074.html

- Let strtold set errno to ERANGE on underflow per POSIX.
  Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00072.html

要在Windows中运用GCC跨平台编写翻译器的优势,请使用MinGW。

Cygwin使用安装向导程序setup.exe来兑现cygwin的在线安装。
同一时间setup.exe文件能够重新安装软件,能够增多、改善或进步 Cygwin
配置的零器件。

(文/开源中中原人民共和国卡塔尔(قطر‎    

要运用Windows中的POSIX标准高档编制程序成效和工具的优势,请使用Cygwin。

维基百科说 :

MinGWCygwin 1.3.3本子中抽离出来。
就算CygwinMinGW都足以用来将UNIX软件移植到Windows ,但她们有差异的法子: Cygwin对象是提供多个完好无缺的POSIX layer ,提供Linux , UNIXBSD变种中存在的几个种类调用和库的比葫芦画瓢。 POSIX layer运行在Windows以上,为了宽容性而投身品质。
由此,这种办法供给利用Cygwin编写的Windows程序运转在必需与程序一齐分发的copylefted包容性库的最上端,以至程序的source code 。 MinGW耐烦通过间接的Windows API calls提供原生的信守和性质。
Cygwin不同, MinGW不须要兼容层DLL ,因而先后无需与source code意气风发道分发。

由于MinGW依赖于Windows API calls ,由此不能提供整机的POSIX API ;
它不可能编写翻译一些得以用Cygwin编译的UNIX applications 。
具体来说,那适用于必要POSIX功能(如fork() , mmap()ioctl()以致希望在POSIX environment运作的应用程序。
使用本人已经移植到MinGWcross-platform library (例如SDL , wxWidgets , QtGTK+编写的应用程序平日在MinGW编写翻译将像在Cygwin那样轻巧。

MinGWMSYS的组成提供了二个微型自包涵的景况,能够将其加载到可活动传媒上,而没有必要在注册表或Computer上的文件中留给条目款项。 Cygwin Portable提供了相符的效果与利益。
通过提供越多的意义, Cygwin设置和掩护变得越发目眩神摇。

也可以MinGW-GCC under POSIX systemsMinGW-GCC under POSIX systems cross-compile Windows applications 。
这象征开荒职员无需采用MSYS进行Windows安装来编译在未曾Cygwin状态下在Windows运作的软件。

从移植C程序的角度来看,驾驭这几个的三个好点子就是举个例证:

#include <sys/stat.h>
#include <stdlib.h>

int main(void)
{
   struct stat stbuf;
   stat("c:foo.txt", &stbuf);
   system("command");
   printf("Hello, Worldn");
   return 0;
}

假定大家把stat _stat ,大家能够用Microsoft Visual
C编译这一个顺序。大家也得以用MinGW和Cygwin来编写翻译那一个程序。

在Microsoft Visual
C下,该程序将链接到MSVC可再发行的运维时库: mxvcrtnn.dll ,其中nn是有些版本的后缀。
为了发表这么些顺序,我们将不能不包涵该DLL。
该DLL提供了_stat , systemprintf 。

在MinGW下,该程序将链接到msvcrt.dll ,那是三个里面包车型大巴,未公开的,未版本化的库,是Windows的大器晚成局地,幸免应用程序使用。
该库本质上是源于MS Visual
C的可再发行的运行时库的二个分支,供Windows自个儿使用。

在此三种情景下,该安顿将有肖似的一举一动:

  • stat函数将再次回到特别常有限的消息 – 举例,未有有用的权位或inode编号。
  • 遵照与驱动器c:相关联的当前专门的学问目录来深入分析路线c:file.txt 。
  • system使用cmd.exe /c来运维外界命令。

咱俩也足以编写翻译Cygwin下的程序。 相似于MS Visual
C使用的可再发行的运转时,Cygwin程序将被链接到Cygwin的运作时库: cygwin1.dll (Cygwin
proper)和cyggcc_s-1.dll(GCC运维时扶持)。
由于Cygwin现在在LGPL之下,就算它不是GPL宽容的无需付费软件,大家也得以用我们的主次打包,并运路程序。

在Cygwin下,库函数的行事将有所不相同:

  • stat函数具有丰盛的效果与利益,在多数字段中回到有意义的值。
  • 路径c:file.txt统统不知底为带有驱动器号援引,因为c:前边未有斜杠。
    冒号被感觉是名字的生机勃勃部分,并以某种情势损坏了它。
    在Cygwin中并未有目的性卷或驱动器的相对路线的概念,未有“当前记录的驱动器”概念,也从未各种驱动器当前的做事目录。
  • system函数尝试接纳/bin/sh -c解释器。
    Cygwin将依赖你的可执行文件的职责来解析/路径,并希望sh.exe次第与你的可实践文件坐落于sh.exe位置。

Cygwin和MinGW都同意你利用Win32函数。
即便你想调用MessageBoxCreateProcess ,你可以如此做。
你也足以在MinGW和Cygwin下行使gcc -mwindows轻松地成立八个无需调控台窗口的前后相继。

Cygwin不是严谨的POSIX。 除了提供对Windows
API的拜谒之外,它还提供了一些Microsoft
C函数(在msvcrt.dll找到的东西或可重新分发的msvcrtnn.dll运作时)的慈祥的兑现。
三个事例正是spawn*系列的spawn*文山会海。
那么些在Cygwin上接收实际不是forkexec是一个好主意,因为它们更加好地照耀到未有fork概念的Windows进度成立模型。

从而:

  • Cygwin程序并不如MS Visual C程序“本地化”,理由是必要库的伴随。
    Windows上的编制程序语言完结需求提供本身的运营时,以至是C语言实现。
    Windows上从不“libc”供大伙儿使用。

  • MinGW没有要求第三方DLL的事实实际上是一个劣点,
    它决议于Visual
    C运维时的未公开的Windows内部分支。 MinGW那样做是因为GPL系统库相当适用于msvcrt.dll ,那意味着能够行使MinGW编写翻译和重复分发GPL编制程序的程序。

  • 由于与msvcrt.dll相比较,对POSIX的更加宽广和越来越深切的支撑,Cygwin是现今移植POSIX程序的优厚条件。
    由于它现在在LGPL之下,所以它同意具有各个许可的应用程序(开放源代码或密闭源代码)被重新分配。 Cygwin以致满含VT100虚假和termios ,它们与Microsoft调控台一同使用! 使用tcsetattr安装原始情势并动用VT100代码来决定光标的POSIX应用程序将要cmd.exe窗口中平常干活。 就最终顾客来说,那是三个本机调整台应用程序,使Win32调用来支配调控台。

然而:

  • 用作三个本土的Windows开辟工具,Cygwin有局地极其,比方Windows的外界路线处理,注重于像/bin/sh类的硬编码路线和其他难点。
    那么些差异是使Cygwin程序“非本地”的。
    假设程序将路线作为参数或从对话框输入,则Windows客户愿意该路径的行事办法与此外Windows程序中的路线形似。
    假使不这么做,这就是个难题。

插件:在LGPL发表后飞速,小编起步了Cygnal (Cygwin本地利用程序库)项目,以提供三个耐性解决那个主题材料的Cygwin
DLL的支行。
程序能够在Cygwin下开采,然后选择Cygnal版本的cygwin1.dll进展安插,而无需再一次编写翻译。
随着那么些库的精耕细作,它将慢慢清除对MinGW的急需。

当Cygnal解决渠道管理难题时,可以支付叁个单身的可试行文件作为Windows应用程序与Cygnal一齐利用时,与Cygwin的/usr/bin下安装Cygwin路线无缝专门的学业与Windows路径。
在Cygwin下,可实行文件将透明地拍卖/cygdrive/c/Users/bob类的途径。
在Cygnal版本的cygwin1.dll链接的地尾布署中,该路径将未有其余意义,而它将领悟c:foo.txt 。

并非大体AT&T的U /
Win软件,该软件能够帮忙你在Windows上编写翻译Unix应用程序(最新版本

  • 二〇一三-08-06;使用Eclipse公共许可证,版本1.0)。

像Cygwin相像,他们必须要跑到一个教室。 在她们的事态下POSIX.DLL 。
AT&T的专门的学问职员是那多个棒的程序员(相近的团体给你带给了ksh和dot ),他们的东西值得生机勃勃试。

Cygwin模拟整个POSIX意况,而MinGW只是编译的小不点儿工具集(编译本地Win应用程序)。所以只要您想让您的系列跨平台,两个之间的精选是显明的,MinGW。

即便您可能会考虑在Windows上利用VS,在Linux / Unices上选用GCC。
大相当多开源项目都以那般做的(举个例子Firefox或Python)。

请留意,功用行为足以真正在两个之间变化。

比方,Cygwin tar能够fork –
因为fork()在DLL中被扶持,而mingw版本则不可能。
尝试从源代码编写翻译mysql时,那是贰个主题素材。

要在经贸/专有/非开源应用程序中央银行使Cygwin,您需求从Red
Hat获得“ 许可证买断 ”的数万法郎;
那使标准许可条约以一定大的财力无效。
Google“cygwin许可证开销”,看见前多少个结果。

对于mingw,那样的资金是不会发生的,许可证(PD,BSD,MIT)是老大包容的。
您至多可能内需为您的应用程序提供许可证详细新闻,比方使用mingw64-tdm时所需的winpthreads许可证。

编排多谢Izzy朝阳花:商业许可证不再是可用的或不可缺少的,因为在Cygwin的winsup子目录中找到的API库后天正在 LGPL下分发 ,并不是完全的GPL。

Cygwin意在为Windows提供八个或多或少完整的POSIX情形,此中包含意气风发套遍布的工具,目的在于提供贰个总体的类Linux平台。
比较之下,MinGW和MSYS提供了一个轻量级的,极简主义的类POSIX层,唯有像gccbash如此那般的更器重的工具可用。
由于MinGW更简便易行的方法,它不提供Cygwin提供的POSIX
API覆盖的水准,由此不可能营造有些能够在Cygwin上编写翻译的次第。

依靠两个生成的代码,Cygwin工具链正视动态链接到三个大的运作时库cygwin1.dll ,而MinGW工具链将代码编写翻译为二进制文件,动态链接到Windows本机C库msvcrt.dll以至静态地glibc局地。
Cygwin可实施文件因而越是严格,但供给独自的可再发行DLL,而MinGW二进制文件能够独自运行,但往往会越来越大。

传闻Cygwin的次序供给独自运营的DLL也会招致许可范围。
Cygwin运营时库在GPLv3下获得承认,对于具有OSI宽容许可的应用程序,链接例外,因而希望围绕Cygwin创设闭源应用程序的开荒者必得从Red
Hat得到商业特许。
其他方面,MinGW代码能够用来开放源码和查封源码的应用程序,因为头文件和库文件是被准予的。

Cygwin是三个贴近于Unix的条件和Microsoft
Windows的通令行界面。

Mingw是GNU编写翻译器集结(GCC)到Microsoft
Windows的原生软件端口,还应该有生龙活虎套可任意分发的用来Windows
API的导入库和头文件。 MinGW允许开采职员创立本机Microsoft
Windows应用程序。

风度翩翩旦具有要求的库(DLL)都留存,您就能够在不行使cygwin条件之处下运作使用mingw转移的二进制文件。

Cygwin使用十分性层,而MinGW是本地的。 这是莫衷一是的。

 

在 Windows 系统上开辟浏览器,通过会见 下载
Cygwin 安装程序。安装程序本身一点都超小(大概 600KB),因为大部分 Cygwin
软件是在安装进程中下载的。完毕下载之后,依照以下步骤安装 Cygwin:

  1 运转安装程序。
  澳门葡萄京官方网站 1
  2 单击 Next 步入下三个显示器,选拔要实行的安装类型。单击 Install
from Internet

  3 单击 Next,然后采取多少个安装目录。
  澳门葡萄京官方网站 2   
  在大超多状态下,推荐的装置选项是适宜的,也得以拓宽定制,不过要留意几点:   1)不要在 Windows 系统的根目录(比方 C:)中装置 Cygwin。最佳把
Cygwin 安装在它协调的子目录中,比方暗中认可目录(C:cygwin)或 C:Program
Filescygwin。(您选取的目的目录将变成模拟的 UNIX 境况的根目录
/。例如,如果在 C:cygwin 中安装,那么设想的 /usr/bin 实际上是
C:cygwinusrbin) 。
  2)对于 Install For 选项,不要筛选 Just Me。   3)把 Default Text File 类型设置为
Unix,进而尽大概升高与别的 UNIX 机器上囤积的幸存文件的宽容性
  4 单击 Next。在下一个窗口中,选取二个仓库储存 Cygwin
所需的数额的目录。永不选拔前一步中精选的 Cygwin 目录。
借使大概的话,应该在有最少 1GB 空闲空间的驱动器上开创或选用贰个索引。
  5 双重单击 Next,接收使用的 Internet 连接类型。平时应该采取Direct Connection。
      6 双重单击 Next。稍等说话,Cygwin
会下载当前的镜像站点列表,让您选取三个镜像站点,
  澳门葡萄京官方网站 3
  假若不鲜明相应采取哪位站点,就分选地理地方比较近的站点。
  7 再次next,
经过短暂的推迟之后,安装程序显示可用的等级次序和包的豆蔻梢头体化列表。
  澳门葡萄京官方网站 4
  突显一个连串的某个剧情。单击加号
(+) 展开对应的等级次序;单击 “循环” 标识在
Skip(忽视此包)和包的具有可用版本之间循环。若是 Cygwin
提供三个实用程序的两个本子,应该采用满足你的需要的实例。顺便说一下,如若接受B 列,就能够下载二进制包;选用 S,也会下载源代码。

在 Cygwin 中可用的包超过 1,000
个,所以应当只选取你必要的门类和包。(安装具备 Cygwin 包会占用超越 800MB
的磁盘空间)。以往随即能够增进全套项目或单独的包:只需另行运转 Cygwin
安装程序。(仍是可以在其余时候用相通的安装程序删除或更新包)。

  8 选拔你须要的工具之后,单击 Next,下载进度开首!
  澳门葡萄京官方网站 5

进程条分别展示各种包的下载速度、总下载进程和磁盘使用量。

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

  10 通过行使 Start 菜单或双击 Cygwin
Logo(假设加多了这个飞速情势的话),运行 Cygwin;也得以实行 Cygwin
目录中的 Cygwin 脚本(例如 C:cygwinCygwin.bat)。

  澳门葡萄京官方网站 6

  显示第叁回运营 Cygwin 时的景观:它创设您的主目录,推行 shell
运营文件,显示提示。以后得以运营 UNIX 命令了!

三 cygwin使用
您能够应用差不多具备的linux/unix命令来操作你本地的windows系统。哈哈!
诸如利用 df -h来查看你的磁盘的使用境况:
澳门葡萄京官方网站 7
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 FilesInternet ExplorerIEXPLORE.EXE

还大概有助于挂钩那多个条件的别样特色:

  • Cygwin 提供它本身的 lpr(/usr/bin/lpr 实际不是 Windows 的
    LP途达.EXE),能够一贯从模拟的 UNIX 情况开展打字与印刷。只需把 P景逸SUVINTE福特Explorer景况变量设置为 \serverprinter_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
初叶更新。与前方相似,下载和装置进程供给一定的时间(开辟包往往超级大)。

在那时候期,展开二个浏览器并通过访谈
下载 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的可实行格式。


参考:

完!