澳门新葡亰平台官网windows – Cygwin和MinGW有什么区别?(MinGW从Cygwin 1.3.3版本中分离出来)

by admin on 2020年2月4日
* cygwin-3.1.0-1
* cygwin-devel-3.1.0-1
* cygwin-doc-3.1.0-1

自身想让自家的C ++项目跨平台,小编正在考虑采纳Cygwin / MinGW。
可是她们之间有怎样界别吧?

  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
  展现二个类型的局地剧情。单击加号
(+State of Qatar 打开对应的档次;单击 “循环” 标识在
Skip(忽视此包)和包的装有可用版本之间循环。若是 Cygwin
提供四个实用程序的多少个版本,应该接收满足你的要求的实例。顺便说一下,如若选拔B 列,就能够下载二进制包;采用 S,也会下载源代码。

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

要接收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的组成提供了一个微型自富含的条件,能够将其加载到可活动媒体上,而不须求在注册表或微微机上的公文中留下条约。 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是本地的。 那是莫衷一是的。

 

五 cygwin中落到实处linux程序到windows的移植和跨平台软件的开销

新本子饱含:

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

一 cygwin
Cygwin 是八个用以 Microsoft® Windows® 操作系统的类 UNIX®
情形。它饱含叁个的确的 UNIX shell、二个 Portable Operating System
Interface (POSIX卡塔尔国 模拟库以至数千个 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

存在一定复杂的跨平台框架,那使得将利用轻巧移植到各个操作系统的义务成为也许

例如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标准的付出和周转条件。

从而:

作用:
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 发布了,Cygwin是广大自由软件的集聚,最先由Cygnus
Solutions开垦,用于各个本子的Microsoft
Windows上,运营UNIX类系统。Cygwin的基本点指标是通过重新编译,将POSIX系统(比方Linux、BSD,甚至此外Unix系统)上的软件移植到Windows上。Cygwin移植专业在Windows
NT、Windows 二零零零、Windows XP以至Windows Server 2001上相比较好,在Windows
95和Windows 98上,相对差劲一些。近期Cygwin由Red Hat等负责掩护。

 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
++编写翻译器及其涉及的链接/制作工具的开源取代品。

二 cygwin的安装
Cygwin 是二个用来 Windows 的类 UNIX shell 遇到。 它由五个构件组成:一个UNIX API 库,它模拟 UNIX 操作系统提供的众多特点;以致 Bash shell
的改写版本和超级多 UNIX 实用程序,它们提供大家纯熟的 UNIX
命令行分界面。前一个零器件是二个 Windows 动态链接库
(DLL卡塔尔(قطر‎。后一个零件是生龙活虎组依据 Cygwin DLL 的主次,个中非常多是用未经改善的
UNIX 源代码编写翻译的。它们合在一同提供我们耳闻则诵的 UNIX 情状。

(文/开源中华夏族民共和国卡塔尔国    

另三个主题素材是,如果未有Cygwin / MinGW,小编能还是不能在系统上运维二进制文件?

  9 最终,安装程序安装软件并(可选地)在 Start
菜单和桌面中增添连忙格局。单击 Finish

顺手说一句,假诺要把 Windows 路线名调换为相像的 UNIX
路线名可能相反,可以尝试内置命令 cygpath。在暗中同意情形下,cygpath 产生
UNIX 路径名。使用 -w 选项发生 Windows 路径。

在那个时候期,展开贰个浏览器并经过拜谒
下载 GNU wget
实用程序的新型源代码。(wget
是风流倜傥种命令行工具,它能够下载任何事物。使用 Cygwin 把此文件复制到 Cygwin
中的主目录,展开压缩文件。

再也运维 Cygwin setup.exe 应用程序,依次通过前多少个对话框,直到达到Select Packages 窗口。展开 Devel
连串,使用循环控件选取以下包的最高版本:

  • autoconf2.1
  • automake1.10
  • binutils
  • gcc-core
  • gcc4-core
  • gdb
  • pcre
  • pcre-devel
$ 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

假使您不赏识 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去实践。

  澳门新葡亰平台官网 5

正如前方提到的,在别的时候都足以经过运转 Cygwin 安装程序加多、删除和立异Cygwin 连串和包。大家来增加多少个软件开拓包,以便像在守旧的 UNIX
系统上那么从源代码塑造程序。

$ 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
$ 
$ cygpath -w /cygwin/c/Program Files/Internet Explorer/IEXPLORE.EXE
c:Program FilesInternet ExplorerIEXPLORE.EXE

主页:

当 Cygwin 下载和安装进度秋风扫落叶时,单击 Finish。以往得以从源代码营造
wget 实用程序了。

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

三 cygwin使用
你能够运用大致具备的linux/unix命令来操作你本地的windows系统。哈哈!
比方说使用 df -h来查阅你的磁盘的接收情形:
澳门新葡亰平台官网 6
Cygwin 安装目录作为杜撰 UNIX 系统的根目录。Cygwin
把安装目录中的子目录映射到 UNIX 目录。它以独立的卷的样式提供 Windows
驱动器,比如 /cygwin/c。能够采纳这样的伪造路线运行 Windows
程序。请尝试输入
/cygdrive/c/Program Files/Internet Explorer/IEXPLORE.EXE
从命令行运行 Windows Internet Explorer®。(还是能够应用 Tab
键自动实行路线的因素) 。

做出抉择之后(为了满足注重性,恐怕会自行接收其余包),单击 Next
早先更新。与前方相像,下载和装置进度必要一定的小时(开采包往往异常的大)。

  8 选拔你须要的工具之后,单击 Next,下载进程开首!
  澳门新葡亰平台官网 7

Cygwin使用安装向导程序setup.exe来促成cygwin的在线安装。
同有时候setup.exe文件能够重新安装软件,能够拉长、更改或升高 Cygwin
配置的组件。

在 Cygwin 中可用的包抢先 1,000
个,所以理应只选用你需求的品种和包。(安装具备 Cygwin 包会占用超过 800MB
的磁盘空间)。现在随时能够增添任何项目或独立的包:只需再一次运维 Cygwin
安装程序。(还可以够在任哪天候用同生机勃勃的安装程序删除或更新包)。

  10 通过运用 Start 菜单或双击 Cygwin
Logo(借使增加了那一个快捷方式的话),运营 Cygwin;也能够试行 Cygwin
目录中的 Cygwin 脚本(比如 C:cygwinCygwin.bat)。


参考:

在 Windows 系统上开垦浏览器,通过拜会 下载
Cygwin 安装程序。安装程序本人非常的小(大概 600KB),因为好多 Cygwin
软件是在设置进度中下载的。完结下载之后,遵照以下步骤安装 Cygwin:

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

  展现第二回运行 Cygwin 时的情事:它创立您的主目录,实践 shell
运营文件,突显提示。现在得以运作 UNIX 命令了!

四 更新和扩展 Cygwin

完!

  • Cygwin 提供它本身的 lpr(/usr/bin/lpr 并不是 Windows 的
    LP本田UR-V.EXE),可以一向从模拟的 UNIX 境况开展打字与印刷。只需把 POdysseyINTETucson意况变量设置为 \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

过程条分别突显各样包的下载速度、总下载进程和磁盘使用量。

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

稍后就能获得三个新的源代码压缩文件。使用 Cygwin 安装程序从 Cygwin
存款和储蓄库获得实用程序是最轻便易行的方法,可是也能够在 Cygwin
中构建下载的或本身的源代码。在 Cygwin 中得以行使成套 UNIX
开辟工具,包蕴最风靡的本子编制程序语言。

唯独当我们将以上的源文件hello.c拷贝的正真的Linux/Unix系统,然后再一次下边的编写翻译的进行命令,程序任然符合规律的周转,可是当时的次序已是Linux/Unix的可进行格式。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图