简单的说,MinGW是一个和cygwin类似的东东,可以在windows下面使用gcc等GNU工具开发程序,通常用于移植linux下开发的软件到windows。最大的区别在于mingw使用的是windows native api,因此编译出来的程序不用依赖第三方的dll库,只需要windows自身的dll;而cygwin编译的程序,需要附带cygwin的dll才能运行;并且mingw的性能要好一点。
mingw可在windows和linux下运行,通过指定target platform,linux下可编译windows平台程序。
0. 安装wine
wine是linux下执行win程序的软件包,编译windows版本的nginx,需要通过wine配合。Igor Sysoev通过wine来发布官方的windows版nginx,但是没有给出具体的编译步骤。在网上看了无数帖子之后,还是没找到具体的步骤,只好自己摸索。
1. 首先安装mingw
从官网下载安装包,解压执行:
2. 配置mingw开发环境
3. 从svn库获取nginx最新代码
- 编译nginx</strong>
由于有些告警无法消除,所以增加了WATCOMC和_NO_OLDNAMES两个定义:
修改objs/Makefile, 将CFLAGS中的-w删除,便于通过编译:
从Windows SDK中拷贝advapi32.lib ws2_32.lib两个文件到trunk目录下。如果没有安装visual studio,可以从msdn上下载Windows SDK。选择安装里面的include和lib就可以了,大约有200MB。
执行make,nginx会在objs目录下生成,可以看到是Win32程序。
5. 运行
将nginx和conf目录拷贝到windows机器,执行nginx即可。
用ab测试,性能看起来还不错。作为一个只有1.9M的绿色版web服务器,运行之后两个进程大约只占5M内存,真是精巧无比。如果去掉-g编译选项,性能还会更好。
6. 关于pcre库
rewrite模块需要pcre库,可以通过下列方式编译安装:
但是通过mingw编译安装之后,无法链接成功,问题待解决: