Windows 11 下使用 MSVC 2022 编译64位Nginx


一、软件准备


1、安装 Visual Studio 2022

包含单个组件:

  • .NET Framework 4.6.1 目标包
  • .NET Framework 4.6.1 SDK
  • Windows 通用 C 运行时
  • Windows 通用 CRT SDK
  • MSVC v142 - VS 2019 C++ x64/x86 生成工具(v14.26)
  • 对 v142 生成工具(14.21)的 C++/CLI 支持
  • Clang compile for Windows
  • Windows 10 SDK (10.0.16299.0)

Visual Studio 2022 的安装这里就不再详细说明。


2、下载源码

下载地址


请选择一个带有 RELEASE TAG 的版本进行下载,如下图:

截至目前, Nginx 的最新 release 版本为 1.26.2

在这里插入图片描述


在左侧选择压缩包类型,点击下载即可,这里我选择ZIP


在这里插入图片描述


下载完成获得源码文件,解压后如下:


在这里插入图片描述


3、下载 pcre 源码包,解压至 objs/lib 文件夹

在这里插入图片描述


4、下载 zlib 源码包,解压至 objs/lib 文件夹

在这里插入图片描述


5、下载 openssl 的源码包,解压至 objs/lib 文件夹

在这里插入图片描述


6、下载并安装 StrawberryPerl

因为需要编译 OpenSSL, 需要使用 perl 进行配置

https://strawberryperl.com/


在这里插入图片描述


安装,同意协议,直接next
在这里插入图片描述


在这里插入图片描述


7、下载并安装 MSYS 2

msys2 在编译阶段用作配置 Makefile

下载地址:https://www.msys2.org/


在这里插入图片描述


安装,直接next ,直到安装完成

在这里插入图片描述


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/98d8ca9df81f435593ab66eb92e60033.png#pic_center)

二、编译配置


1、修改 /nginx/auto/cc/msvc 文件

MSVC 2022 对应 19.34,在 echo " + cl version: $NGX_MSVC_VER" 的上一行加上 :NGX_MSVC_VER=19.34


在这里插入图片描述


在这里插入图片描述


2、64位编译修改(32位编译忽略)

  • Step 1: 打开.\auto\lib\openssl\makefile.msvc文件

在这里插入图片描述


  • Step 2: 找到以下代码进行替换

    • perl Configure $(OPENSSL_TARGET) no-shared no-threads替换为perl Configure VC-WIN64A no-shared

在这里插入图片描述


  • Step 3 找到以下代码进行替换

  • if exist ms\do_ms.bat 替换为if exist ms\do_win64a.bat

  • ms\do_ms替换为ms\do_win64a

在这里插入图片描述


3、配置 Makefile
  • Step 1: 使用 msys2 的任意环境进入 nginx 源码目录
cd D:\Nginx

在这里插入图片描述


  • Step 2: 执行以下命令,用于生成适用于 MSVC 的 Makefile

以下命令行配置了 nginx 在 Windows 下的常用模块的编译,可以根据自己需要调整相关模块:

auto/configure \--with-cc=cl \--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/pcre-8.45 \--with-zlib=objs/lib/zlib-1.3.1 \--with-openssl=objs/lib/openssl-3.3.1 \--with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0601' \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_addition_module \--with-http_sub_module \--with-http_stub_status_module \--with-http_dav_module \--with-http_flv_module \--with-http_mp4_module \--with-http_gunzip_module \--with-http_gzip_static_module \--with-http_auth_request_module \--with-http_random_index_module \--with-http_secure_link_module \--with-http_slice_module \--with-mail \--with-mail_ssl_module \--with-stream \--with-stream_ssl_module \--with-stream_ssl_preread_module

执行成功,会出现以下界面:


在这里插入图片描述


  • Step 3: 打开VS对应的 X64 Native Tools Command … for VS 2022

在这里插入图片描述


在这里插入图片描述


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7fc82884e1dc4a3b9b1386125f61ba79.png#pic_center)

Step 4: 切换到Nginx根目录 执行编译命令


cd /d D:\Nginx
nmake -f objs/Makefile

如下图:
在这里插入图片描述


等待编译完成,会在 nginx/objs/ 文件夹内出现 nginx.exe,如下图所示:
在这里插入图片描述


nginx.exe运行依赖同级目录下存在conf、html、logs、temp目录及配置文件,否则无法启动。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1522307.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Confluence8.5.14安装

一、Centos8、安装jdk11(略) 二、mysql数据库 1、mysql安装包下载: MySQL :: Download MySQL Community Server 2、安装: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.37-1.el8.x86_64.rpm-bundle.tar tar -xvf mysql-8.0.37-1.el8.x86_64.rpm-bund…

【Hadoop|HDFS篇】HDFS概述

1. HDFS产出背景及定义 1.1 HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系 统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这 就是分布…

智能化升级:AI在客服知识库中的应用

引言 在数字化时代,客户服务已成为企业竞争的关键一环。随着人工智能(AI)技术的飞速发展,传统客服模式正经历着前所未有的变革。AI与客服知识库的深度融合,不仅极大地提升了客服处理的效率与准确性,还为用…

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…

MIPI(Mobile Industry Processor Interface)

MIPI是指Mobile Industry Processor Interface&#xff0c;移动产业处理器接口&#xff0c;MIPI包含了多种接口&#xff0c;比如DSI显示屏接口、CSI摄像头接口、I3C、RFFE射频前端控制接口和SPMI系统电源管理接口。 车载液晶屏的接口主要使用RGB和LVDS&#xff0c;MIPI接口主要…

html+css+js网页设计 故宫7个页面 ui还原度100%

htmlcssjs网页设计 故宫7个页面 ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1…

汉诺塔的最简单讲解

##从印度佬哥那里学来&#xff0c;所以我想直接引用他画出来的树图 上图为一个经典的三碟盘的汉诺塔的递归树形图。 我们为了将所有碟盘按照从小到大的方式排列在目标处 --- 3 只用三步: 1. 将最小的碟盘和倒数第二的碟盘 全都移动到 2处 也就是中间那个棍子。 2.将最大的碟…

【服务对接】✈️SpringBoot 项目整合华为云 obs 对象存储服务

目录 &#x1f44b;前言 &#x1f440;一、环境准备 &#x1f331;二、整合实现 1.依赖引入 2.准备 AK 和 SK ​ 3.配置类 4.obs 工具类封装 &#x1f49e;️三、测试使用 &#x1f37b;四、 obs 客户端 &#x1f4eb;五、章末 &#x1f44b;前言 小伙伴们大家好&…

ini文件中的节点如何删除?

1、在某些场合中&#xff0c;会将某些数据记录本地情况&#xff0c;会有“保存/加载”过程。 比如&#xff1a; 第一次Write节点信息&#xff08;2个&#xff09;&#xff0c;如下节点 第二次Write节点信息&#xff08;1个&#xff09;&#xff0c;如下节点。会发现本来想写入…

《实战AI大模型》从入门到精通,彻底掌握AI技术

前言 《实战AI大模型》是一本兼具深度和广度的大模型入门书籍&#xff0c;它深入浅出地诠释了AI大模型的核心概念和技术。以大模型为代表的AI2.0是有史以来最重要的技术革命&#xff0c;如果你渴望了解和应用大模型&#xff0c;这本书是一份可贵的“知识基座” 无论你是NLP新手…

使用控制台与键盘进行输入输出

1、控制台简介与初始化 计算机在上电启动后&#xff0c;显示器被默认配置成80x25列的文本显示模式 。其使用从0xb8000开始&#xff0c;一共32KB的显存用于显示。如要在屏幕上指定位置显示特定的字符&#xff0c;则只需找到该位置对应的显存地址&#xff0c;写入2字节的数据&am…

海外直播对网速、带宽、安全的要求

要满足海外直播的要求&#xff0c;需要拥有合适的网络配置。在全球化的浪潮下&#xff0c;海外直播正逐渐成为企业、个人和各类组织的重要工具。不论是用于市场推广、品牌宣传&#xff0c;还是与观众互动&#xff0c;海外直播都为参与者带来了丰富的机会。然而&#xff0c;确保…

【C++从练气到飞升】19---哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书&#x1f389; 目录 ⛳️推荐 一、unordered 系列关联式容器 二、unordered_map 1.1 unordered_map 介绍 1.2 unordered_map 的…

5大专业措施确保源代码防泄密

深信达的SDC防泄密软件通过一系列创新技术和方法来实现源代码的安全保护&#xff0c;以下是一些关键点和注意事项&#xff1a; 1. **内核级虚拟沙盒技术**&#xff1a;SDC沙盒创建一个与外部环境隔离的执行空间&#xff0c;源代码的编译、运行和调试过程完全隔离于外部操作系统…

部标JT808标准下的视频汇聚新方案:EasyCVR平台助力推动车辆监管智能化进程

在数字化转型的浪潮中&#xff0c;智慧城市的建设正以前所未有的速度推进&#xff0c;而市政车载设备作为城市运行的重要“神经末梢”&#xff0c;其智能化、联网化水平直接影响着城市管理效率与服务质量。近年来&#xff0c;随着部标协议&#xff08;即国家行业标准协议&#…

如何录制黑神话悟空的游戏BGM导入iPhone手机制作铃声?

在游戏的世界里&#xff0c;总有那么一些旋律&#xff0c;能够触动玩家的心弦&#xff0c;让人难以忘怀。《黑神话悟空》以其精美的画面和动人的背景音乐&#xff0c;赢得了无数玩家的喜爱。如果你也想将游戏中的背景音录制下来&#xff0c;制作成个性化的m4r格式铃声&#xff…

实例分割【YOLOv8版】

参考文档 Segment - Ultralytics YOLO Docs​docs.ultralytics.com/tasks/segment/ 何为实例分割&#xff1f; 实例分割比目标检测更进一步&#xff0c;涉及识别图像中的各个对象并将它们与图像的其余部分分割开来。 实例分割模型的输出是一组用于勾勒图像中每个对象的掩码…

element-plus表单项循环的得到的。并且一个项里面有多个子项需要校验。

数据内容循环得到。并且还可以自己增加减少。怎么给他写校验呢&#xff1f; <el-formref"ruleFormRef":rules"rules":model"row" > <el-form-item:label"index>0?:资质及职称"v-for"(item,index) in row!.userTitl…

EE trade:区块链工程专业是什么

区块链技术&#xff0c;作为近年来最具颠覆性的技术之一&#xff0c;正在深刻地改变着我们的生活方式和商业模式。区块链工程专业&#xff0c;应运而生&#xff0c;旨在培养能够胜任区块链领域技术开发、应用和管理的专业人才&#xff0c;为数字经济发展提供强有力的人才支撑。…

HTB-bike(SSTI模版注入)

前言 大家好&#xff0c;我是qmx_07,今天给大家讲解bike靶场 渗透过程 信息搜集 服务器开放了 22 ssh 和 http80端口 Wappalyzer 介绍&#xff1a;Wappalyzer是一种浏览器扩展程序&#xff0c;用于识别正在访问的网站所使用的技术栈和工具&#xff0c;比如使用的web框架&…