Windows环境下编译nginx

windows下利用MSYS2和VS的nmake编译nginx源码

  • 源码下载地址:
    https://github.com/nginx/nginx
  • MSYS2 中文版 v2016.10.25
    http://www.downza.cn/soft/289517.html

nginx 依赖

安装需要:openssl;pcre;zlib;这三个nginx依赖的库可自行网上下载,链接:https://github.com/tjliupeng/nginx-build-windows

objs/lib 下面就是三个依赖项目

Openssl:实现安全套接字ssl功能
Pcre:实现正则表达式解析
Zlib:实现gzip压缩解压缩功能

在源码根目录下新建一个objs目录,在objs目录下新建lib文件夹,将解压好的openssl、pcre、zlib拷贝到lib目录下。当然也可以直接拷贝 上述代码库汇总的 objs 文件夹。

制作 makefile

生成Makefile之前先将源码的auto\cc目录的msvc文件做如下修改:

将83行的优化选项设置为-W3
将117和119行注释掉(因为我用的VS2019,版本较高,需要注释掉,不然会报异常)

安装好 MSYS2 后,打开文件 C:\msys64\mingw32.exe ,这里考虑只编译 32位下的 nginx
此时弹出一个 控制台窗口,使用命令切换到源码目录,这里不能采用windows路径,需要切换成 /d/nginx\ 这种linux上面的路径

运行下面的命令

auto/configure \
--with-cc=cl \
--builddir=objs \
--prefix= \
--conf-path=conf/nginx.conf \
--pid-path=logs/nginx.pid \
--http-log-path=logs/access.log \
--error-log-path=logs/error.log \
--sbin-path=nginx.exe \
--http-client-body-temp-path=temp/client_body_temp \
--http-proxy-temp-path=temp/proxy_temp \
--http-fastcgi-temp-path=temp/fastcgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 \
--with-pcre=objs/lib/pcre-8.40 \
--with-zlib=objs/lib/zlib-1.2.11 \
--with-openssl=objs/lib/openssl \
--with-openssl-opt=no-asm \
--with-select_module  \
--with-http_ssl_module \
--with-stream \
--with-stream_ssl_preread_module \

时间可能比较久,稍安勿躁

上述命令是生成可以通过VS的nmake编译的Makefile

此时源码根目录下生成一个Makefile文件,objs文件夹下生成一些Makefile和编译要用到的头文件

开始编译源码

打开vs的命令行
在这里插入图片描述
点击上面的红框部分 或者可以 者通过cmd命令行打开vc子目录下的vcvars32.bat。(C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build)

我在这里开始有点不太理解,后来想通是这样的: 在CMD命令下运行 vcvars32.bat 或者 执行vs控制台都是给 shell 准备环境变量用的,只有准备好,才能再 命令行运行 nmake ,否则找不到这个工具

  • 切换到源码根目录 nmake –f objs/Makefile
    用VS的nmake进行编译就可以在objs目录下生成exe文件

发布nginx

新建一个nginx的文件夹,在源码中的conf,contrib,html拷贝过来,将objs目录中生成的nginx.exe放进来,再新建logs和temp文件夹,就完成了nginx for windows的工作。

参考 https://www.cnblogs.com/iamyuxing/p/10883626.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值