Win10 64位操作系统中编译nginx

本文详细介绍了在Windows环境下,使用VS2010、ActivePerl、msys2等工具,从源码编译Nginx的过程。包括环境准备、源码下载、编译环境部署、修改代码结构、配置及编译步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考如下信息

环境准备

  • 已安装VS2010的Win10电脑一台
  • 安装ActivePerl。这个是为了编译openssl
  • 安装msys2

源码下载

编译环境部署

  • 打开msys2, 等msys2初始化完成后,会在msys2的统计目录中多出来一个opt的文件夹,将下载的源码都复制到该目录
  • 在msys2的终端中切换路径的/opt,就能查看到源码
cd /opt && ls
  • 解压缩源码
 tar -zxvf nginx-8acaa1161783.tar.gz && tar -zxvf openssl-1.0.2p.tar.gz && tar -zxvf pcre-8.38.tar.gz && tar -zxvf zlib-1.2.11.tar.gz
  • 修改代码结构,将依赖的源码都移动到nginx-8acaa1161783/objs/lib目录
cd nginx-8acaa1161783/ && mkdir -p objs/lib && mv ../openssl-1.0.2p ../pcre-8.38 ../zlib-1.2.11 ./objs/lib

开始编译

  • 执行configure,这一步路径是关键,我这里是假设我最终会在D:\nginx下运行我的nginx程序,如果不想放在D:\nginx下,也可以根据情况去修改路径。但一定不是/opt,/usr/local这一类的linux路径格式
    1. 运行的时候出现了auto/cc/msvc: line 117: [: : integer expression expected的错误信息,看了一下auto/cc/msvc的文件,应该是版本判断时出错了,将如下原文修改为,并重新执行一下configure的命令
	# 修改前
    # MSVC 2005 supports C99 variadic macros
    if [ "$ngx_msvc_ver" -ge 14 ]; then
        have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
    fi
	# 修改后
    # MSVC 2005 supports C99 variadic macros
    # if [ "$ngx_msvc_ver" -ge 14 ]; then
        have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
    # fi
auto/configure \
    --with-cc=cl \
    --with-debug \
    --prefix=D:/nginx \
    --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=D:/nginx/temp/client_body_temp \
    --http-proxy-temp-path=D:/nginx/temp/proxy_temp \
    --http-fastcgi-temp-path=D:/nginx/temp/fastcgi_temp \
    --http-scgi-temp-path=D:/nginx/temp/scgi_temp \
    --http-uwsgi-temp-path=D:/nginx/temp/uwsgi_temp \
    --with-cc-opt=-DFD_SETSIZE=1024 \
    --with-pcre=./objs/lib/pcre-8.38 \
    --with-zlib=./objs/lib/zlib-1.2.11 \
    --with-openssl=./objs/lib/openssl-1.0.2p \
    --with-openssl-opt=no-asm \
    --with-select_module \
    --with-http_ssl_module
  • 修改openssl的编译参数,使其支持64位编译器
    1. 打开.\auto\lib\openssl\makefile.msvc文件
      1. 找到“VC-WIN32”替换为“VC-WIN64A”;
      2. “if exist ms\do_ms.bat”替换为“if exist ms\do_win64a.bat”;
      3. “ms\do_ms”替换为“ms\do_win64a”。
  • 修改nginx-8acaa1161783/objs/Makefile中的CFLAGS字段,去掉-W4 -WX的编译选项,添加-W3的编译选项
  • 启动Visual Studio x64 Win64命令提示框,将路径切换到nginx-8acaa1161783。然后直接输入nmake进行编译。
    1. 编译完成之后会有一个与sed相关的报错,不用管他就可以了,我们已经编译完了。

部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值