在 2012年4月12日 上午5:35,agentzh <age...@gmail.com> 写道:
> 多谢分享!抄送给 openresty 邮件组,这样更多人可以看到你的尝试 :)
>
- 值得收入官方维基中,成为建议过程,,,
> Thanks!
> -agentzh
>
> On Sat, Apr 7, 2012 at 5:54 AM, runner mei <runner.mei@gmail.com> wrote:
>>
>> agentzh:
>> 你好, 很乐意将 nginx 及相关模块的移植情况告诉你。
>>
>> nginx 及其模块的代码质量相当高,基本上不需要作什么修改就可以在msvc下编译通
>> 过。主要是各模块的编译脚本没有提供对msvc的支持,其实 nginx 倒是提供了。
>>
>> 1. 用msvc编译时需要一个msys环境(不需要mingw),在启动msys之前需要初始化msvc,
>> 就是执行一个bat, 它的位置是一般在C:\Program Files\Microsoft Visual Studio 10.0
>> \VC\vcvarsall.bat,其它版本的位置可能不是这个,你可以找一下名为vcvars32.bat的文
>> 件。初始化msvc后执行msys.bat, 注意这两个文件必须是在同一个dos命令下执行。
>>
>> 2.进行msys后,进入nginx目录,注意一下,msys支持的路径与windows不一样,它采
>> 用的是linux路径,"\"要改成"/", 类似于c:\nginx_src要改成 /c/nginx_src
>> 忘了说,从nginx官方网站上是下载不到win源代码, 你只能用svn工具从源代码库中下
>> 载。
>>
>> 3.如果仅仅是编译nginx的话,只要执行下列命令就可以了
>> ./auto/configure --prefix= --sbin-path=. --with-cc=cl
>> --with-cc-opt="-DFD_SETSIZE=1024"
>> 对了忘说,在编译之前你需要将msys/bin下的link.exe改个名字,因为msvc的链接程序
>> 也叫link, 结果导致冲突了。
>>
>> 4. 加入zlib的支持,下载zlib后,在命令中加上 --with-zlib=zlib路径,你不需要编
>> 译zlib的,nginx会自动编译的, 注意如果你用的是最新版1.2.6中话,需要修改文件,
>> 打开auto/lib/zlib/makefile.msvc将下面的行
>>
>> cl -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c
>> compress.c
>>
>> link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \
>> trees.obj zutil.obj compress.obj
>>
>> 改成
>> cl -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c
>> compress.c gzwrite.c gzlib.c
>>
>>
>> link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \
>> trees.obj zutil.obj compress.obj gzwrite.obj gzlib.obj
>>
>>
>> 5. 加入pcre 的支持,从http://www.pcre.org/上下载pcre后,在命令中加上; --with-pcre=pcre路
>> 径,同样你不需要编译 pcre 的,nginx会自动编译的,注意不要下那个gnuwin32 版。
>>
>> 6. 好了,到现在为止,nginx 基本上可用了,如果想要加入lua的支持请继续。
>>
>> 7. nginx 的代码质量很高,同时也支持很多的平台或编译器,所有代码在msvc下编译时居然没有一
>> 个警告。它在编译脚本中将编译警告级别设置成最高,并将警告视为错误。下面的模块编译时有一些警
>> 告,这样就不行了,需要改一下, 打开 auto/cc/msvc 文件, 找到下面的行
>>
>> CFLAGS="$CFLAGS -WX"
>>
>> 注释掉它,就是在前面加一个#
>>
>>
>> 8. 用 gcc 的人很少用预编译头技术,而在 msvc 中很常见,因此 nginx 在用 gcc 编译时没有开
>> 启预编译头,而用 msvc 编译时开启了, 用预编译头有一个缺点就是要求所有的 c 文件第一个include
>> 必须是预编译头的那个头文件,而下面的模块没做到这一点,因此需要关闭它,打开 auto/cc/msvc 文
>> 件,找到下面的行
>>
>> # precompiled headers
>>
>> 将它下面的4行,全注释掉
>>
>>
>>
>> 9.加入ngx_devel_kit 的支持, 在命令中加上 -add-module=ngx_devel_kit路径
>>
>> 10.加入lua_nginx_module 的支持, 打开 lua_nginx_module 目录下的 config, 找到下面的行
>>
>> ngx_feature_libs="-L$LUA_LIB -llua -lm"
>> fi
>>
>> . auto/feature
>>
>> 在 auto/feature 之后插入下面的行。
>>
>> if [ $ngx_found = no ]; then
>> # msvc
>> ngx_feature_libs="$LUA_LIB/lua51.lib"
>> . auto/feature
>> fi
>>
>> 11. 更多的模块可以自已摸索,有问题可以发邮件到 runner.mei@gmail.com
>>
>>
>> --
>> runner.mei@gmail.com
>
>
> --
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/