windows+msvc编译nginx完整教程

说明:此文章希望成为最全最傻瓜式的windows编译nginx教程,以此避坑~~

1、nginx源码下载

1.1 下载地址

http://hg.nginx.org/nginx/

这里我下载最新的1.25.1源码 

1.2 解压源码

这里我演示解压到C盘,目录可根据自定义

 1.3 目录内容

源目录没有objs,这是后面手动添加的,详情往下看

2、nginx依赖下载

2.1 pcre

用途:Nginx 的 HTTP 模块使用 pcre 来解析正则表达式

下载地址PCRE - Browse Files at SourceForge.net

备注:pcre版本可选pcre或者pcre2,我这里选的是pcre2-10.39 

2.2 openssl

用途:nginx可以在Internet上提供秘密性传输,简单理解可以上ssl安全证书,可以不用,但最好是必须有

下载地址/source/old/index.html (openssl.org)

 备注:openssl版本可自选,最好选1.1.1系列,演示用的是1.1.1t

2.3 zlib

用途:zlib 是一个文件压缩和解压缩的库,Nginx 使用 zlib 对 HTTP 数据包进行 gzip 压缩和解压

下载地址zlib Home Site

备注:一般下载最新的zlib源码,演示用的是1.2.13 

3、环境准备

3.1 msvc编译环境

下载visual studio2017或更高版本

地址Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本

组件安装(不能单独选msvc编译工具,否则编译的时候会找不到limits.h等头文件):

环境变量(以实际安装路径为准,nmake,cl命令所在路径): 

cmd演示:

3.2 git bash环境

备注:模拟linux环境,仅用于生成Makefile或解压源码

地址Git - Downloading Package (git-scm.com)

3.3 perl环境准备

备注:用于编译openssl,ActivePerl​​ 和 ​ ​Strawberry Perl​​ 都可以

地址1: Download & Install Perl - ActiveState

地址2Strawberry Perl for Windows

环境变量

cmd演示

 

3.4 解压源码

3.4.1 创建nginxhome/objs/lib目录

在nginx源码根目录运行git bash

 mkdir -p objs/lib

​  

3.3.1 解压源码包

先把openssl、pcre、zlib 源码压缩包移动至objs/lib下,并执行解压命令

tar -xf openssl-1.1.1t.tar.gz

tar -xf pcre2-10.39.tar.gz

zlib-1.2.13.tar.gz

查看下目录

4、编译

4.1 修改server banner

源码路径:C:\nginx-release-1.25.1\src\core\nginx.h

修改对象NGINX_VERSION和NGINX_VER

NGINX_VERSION建议删除

NGINX_VER 可自定义,如Unknow

修改后 

4.2 生成Makefile

nginx源码根目录运行configure(windows编译环境,configure必须在auto目录的)

#视实际情况添加模块
auto/configure \
    --with-cc=cl \
    --with-debug \
    --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 \
    --http-scgi-temp-path=temp/scgi_temp \
    --http-uwsgi-temp-path=temp/uwsgi_temp \
    --with-cc-opt=-DFD_SETSIZE=1024 \
    --with-pcre=objs/lib/pcre2-10.39 \
    --with-zlib=objs/lib/zlib-1.2.13 \
    --with-openssl=objs/lib/openssl-1.1.1t \
    --with-openssl-opt=no-asm \
    --with-http_ssl_module

若出现识别不了cl版本的情况(不一定出现,没出现可不修改),可以手动修改版本号

打开cmd输入cl,可以看到cl版本号,修改C:\nginx-release-1.25.1\auto\cc\msvc文件

 

 

等片刻,可见objs/下已经生成Makefile文件

4.3 nmake编译

打开vc编译命令行,需打开native(本地)命令工具

 执行命令

##需改为实际nginx源码路径

cd C:\nginx-release-1.25.1

nmake -f objs/Makefile

编译时间具机器性能而定,耐心等待生成nginx.exe文件

​  

 

5、测试跑通nginx

5.1 打包Nginx目录

源码目录拷贝conf、conrtrib、docs;手动创建html、temp、logs;拷贝nginx.exe到根目录

5.2 html目录下写一个index.html文件 

编辑完内容,需重命名为index.html

5.3 启动nginx

双击nginx.exe,浏览器访问本地起的nginx地址,看到server是编译的unknow版本,完美撒花!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows下使用C++编程可以使用多种工具和编译器,其中包括CMake和MSVC编译器。下面是对这些工具的简要介绍: 1. CMake:CMake是一个跨平台的开源构建工具,它可以生成用于不同编译器和操作系统的构建脚本。使用CMake可以简化项目的构建过程,并提供了一种统一的方式来管理项目的依赖关系。CMake使用CMakeLists.txt文件来描述项目的构建规则。 2. MSVC编译器:MSVCMicrosoft Visual C++)是微软提供的C++编译器,它是Windows平台上最常用的编译器之一。MSVC提供了强大的调试功能和丰富的开发工具,可以方便地进行Windows平台的开发。MSVC也支持C++11、C++14、C++17等新标准。 在Windows下使用CMake和MSVC编译器进行C++项目的构建和编译,可以按照以下步骤进行: 1. 安装CMake:首先需要下载并安装CMake,可以从官方网站(https://cmake.org/download/)下载适合你的操作系统的安装包,并按照安装向导进行安装。 2. 创建CMakeLists.txt文件:在项目根目录下创建一个名为CMakeLists.txt的文件,该文件用于描述项目的构建规则。在CMakeLists.txt中,你可以指定项目的源文件、依赖库、编译选项等。 3. 打开命令提示符或者PowerShell:在项目根目录下打开命令提示符或者PowerShell。 4. 创建构建目录:在命令提示符或者PowerShell中,使用mkdir命令创建一个用于构建的目录,例如build。 5. 进入构建目录:使用cd命令进入构建目录。 6. 运行CMake:在构建目录中运行cmake命令,指定项目根目录的路径。例如,如果项目根目录在D:\project下,则可以运行以下命令: ``` cmake D:\project ``` 7. 生成项目文件:CMake会根据CMakeLists.txt文件生成相应的项目文件,例如Visual Studio的解决方案文件(.sln)和项目文件(.vcxproj)。 8. 打开生成的项目文件:使用Visual Studio打开生成的解决方案文件(.sln),可以在Visual Studio中进行代码编辑、调试和编译。 9. 编译项目:在Visual Studio中选择合适的配置(Debug或Release),然后点击编译按钮进行项目的编译。 以上是使用CMake和MSVC编译器进行C++项目的基本步骤。当然,具体的操作可能会因为项目的不同而有所差异。如果你有具体的问题或者需要更详细的介绍,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值