当前位置: 欧洲杯竞猜 > 计算机知识 > 正文

Windows下的Linux开垦情形,Cygwin和MinGW有啥样分别

时间:2020-04-07 17:37来源:计算机知识
Cygwin 3.1.0 发布了, Cygwin 是广大自由软件的会晤,最早由CygnusSolutions开拓,用于各类版本的MicrosoftWindows上,运转UNIX类系统。Cygwin的显要指标是因此重新编写翻译,将POSIX系统(举个例子

Cygwin 3.1.0 发布了,Cygwin是广大自由软件的会晤,最早由Cygnus Solutions开拓,用于各类版本的Microsoft Windows上,运转UNIX类系统。Cygwin的显要指标是因此重新编写翻译,将POSIX系统(举个例子Linux、BSD,以致此外Unix系统)上的软件移植到Windows上。Cygwin移植工作在Windows NT、Windows 贰零零贰、Windows XP甚至Windows Server 2000上比较好,在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 操作系统提供的广大特征;以致 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宝马7系.EXE),能够从来从模拟的 UNIX 情形开展打字与印刷。只需把 PHighlanderINTEWrangler景况变量设置为 \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的可进行格式。

六 参考:

完!

编辑:计算机知识 本文来源:Windows下的Linux开垦情形,Cygwin和MinGW有啥样分别

关键词: 欧洲杯竞猜