Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下
是相同的.但是,unix有自己一些独特的API(如
fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win32下当然找不到对应的库.
但是,这些API的功能在win32中也能实现,也许你已经发现了一个能让window编译Unix风格代码的方法:
1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的
做法.
2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是
cygwin的做法.
MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是
Minimalist GNU on Windows的略称。
MinGW,即 Minimalist GNU For
Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生
Windows32 程序。
MSYS:Minimal GNU(POSIX)system on
Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。
cygwin是一
个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件。
基本上Cygwin
是提供了在windows上使用unix环境的套件不过开发程式的话编译出来的程式码是需要在Cygwin下才能正确执行虽然也是可以使用-mno-
cygwin的flag
MSYS & MinGW都包括了許多的子套件在里面首先MSYS是Minimal
SYStem的缩写提供了类似Bourne shell环境下要编译程式的一些utility MSYS &
MinGW都包括了许多的子套件在里头首先MSYS是Minimal SYStem的缩写提供了类似Bourne
shell环境下要编译程式的一些utility像automake之类。
而MinGW則是Minimalistic GNU for
Windows的缩写他包含了许多的compiler for windows、win32api等等是用來编译for
windows的执行档用不像Cygwin编出來的程式必須在Cygwin下才能跑而MinGW则是Minimalistic GNU for
Windows的缩写他包含了许多的compiler for windows、win32api等等是用来编译for
windows的执行档用不像Cygwin编出来的程式必须在Cygwin下才能跑
因此可以看出因此可以看出
Cygwin
&
MSYS的角色是有重叠的我們可以在Cygwin提供的环境下用MinGW的compiler&library来编出可单独执行的Windows
执行档在MinGW的FAQ也有提到这点就是把PATH设定正确,在Cygwin下使用MinGW的compiler & library即可
。
阅读(1113) | 评论(1) | 转发(0) |