Chinaunix首页 | 论坛 | 博客
  • 博客访问: 238553
  • 博文数量: 108
  • 博客积分: 3285
  • 博客等级: 中校
  • 技术积分: 1360
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 15:43
文章分类

全部博文(108)

文章存档

2014年(1)

2012年(3)

2011年(28)

2010年(20)

2009年(24)

2008年(32)

我的朋友

分类: LINUX

2010-10-28 11:49:17

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即可 。

阅读(1073) | 评论(1) | 转发(0) |
0

上一篇:可变参数宏

下一篇:一些 C Macro 的技巧

给主人留下些什么吧!~~

chinaunix网友2010-10-28 18:07:47

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com