如何在 Win32 平台上用 Visual C 编译 nginx

优质
小牛编辑
122浏览
2023-12-01

准备条件

为了在Microsoft Win32®平台编译nginx,你需要做如下准备:

  • Microsoft Visual C 编译器。已知Microsoft Visual Studio®8和10是可用的。
  • MSYS
  • 如果想编译OpenSSL®,以及为nginx添加SSL支持,需要安装Perl,比如ActivePerl或者Strawberry Perl
  • Subversion® 客户端。可以从这个列表 中任选一个。
  • PCRE, zlib 以及 OpenSSL 库的源文件。

编译步骤

在开始编译之前,确保Perl的路径、Subversion以及MSYS的bin路径已经添加到系统环境变量PATH中。 运行Visual C安装目录下的vcvarsall.bat脚本来设置Visual C环境。

nginx编译过程:

  • 启动MSYS bash。
  • 从svn.nvinx.org仓库检出nginx的源代码。例如:
    svn co svn://svn.nginx.org/tags/release-1.1.6
    
  • 为构建项目创建目录,然后创建lib目录,并将zlib、PCRE以及OpenSSL库的源代码解压到lib目录:
    mkdir objs
    mkdir objs/lib
    cd objs/lib
    unzip https://www.xnip.cn/doc/BZ7EWB2Enginx_docs/pcre-8.12.zip
    tar -xzf https://www.xnip.cn/doc/BZ7EWB2Enginx_docs/zlib-1.2.5.tar.gz
    tar -xzf https://www.xnip.cn/doc/BZ7EWB2Enginx_docs/openssl-1.0.0e.tar.gz
    
  • 运行配置脚本:
    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.12 \
    --with-zlib=objs/lib/zlib-1.2.5 --with-openssl=objs/lib/openssl-1.0.0e \
    --with-select_module --with-http_ssl_module --with-ipv6
    
  • 执行make命令:
    nmake -f objs/Makefile
    

参见

翻译: 樵客