WIN10+VS2017环境下编译nginx-1.12及rtmp module备忘

windows版本编译配置好nginx 这里只是最基本nginx配置,Windows版本nginx,支持RTMP模块已经配置完成,并建立live实例,下载完把nginx-1.7.11.3-Gryphon放入一个没有中文的路径中。 立即下载

本项目已开源,地址:https://github.com/Car-eye-team/Car-eye-RTMP-server/tree/master/source/nginx_windows

昨天在Windows下编译了下nginx-1.12版本,过程比较蜿蜒,记录一下。

首先说下必备的工具及代码:

MSYS-1.0.11.exe,交叉环境,推荐安装版的,会自动配置好环境变量,最后我会提供下载地址,很小,安装包3M。

该工具的主要作用就是执行configure进行项目的配置,并会在nginx项目目录中生成build目录及相关子目录及几个代码文件跟Makefile文件,这些生成完之后就没用了,编译用的是VS2017的nmake工具。

准备好nginx,nginx-rtmp-module,pcre,zlib这四分代码,下载地址就没必要提供了,这时有人会说了还有openssl呢?的确是需要的,不过编译openssl需要perl环境,对我来说每多装一个程序都是一次考验,而且在官方提供静态库的情况下何苦自己找不痛快呢?openssl静态库及头文件最后一起提供下载地址,版本是OpenSSL-1_1_0h,好了,工具都准备好了,开工吧。

首先呢需要将nginx的配置文件修改下,在项目的auto\cc目录下,打开msvc文件,定位到83行左右吧,查找下面这部分代码:

# warnings
CFLAGS="$CFLAGS -W4"
# stop on warning

CFLAGS="$CFLAGS -WX"

将-W4参数改为-W3,否则编译的时候会报错通不过,此时不改在下面的Makefile说明里修改也可以,下面的-WX参数如果你不希望在编译报警时停下来的话可以将CFLAGS="$CFLAGS -WX"注释掉即可。

然后假设已经安装好了MSYS环境,这个是有桌面图标的,点击即可运行,进行nginx项目根目录下,运行以下命令进行项目配置文件的生成:

auto/configure --with-cc=cl --builddir=build --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=../pcre \
--with-zlib=../zlib --with-openssl=./include \
--with-select_module --with-http_ssl_module \
--with-http_sub_module \

--add-module=../nginx-rtmp-module

稍微解析下几个参数吧:

--builddir:后面跟的参数就是要生成Makefile及配置代码的目录,生成的中间obj文件都在该目录下的各个模块子目录中;

--with-pcre:后面就是pcre项目代码所在目录

--with-zlib:后面就是zlib项目代码所在目录

--with-openssl:后面跟的是openssl头文件所在目录,include目录中有子目录openssl,里面是头文件,一定要有子目录openssl,因为nginx代码中引用头文件的格式是#include "openssl/xxx.h"这样的方式;

--add-module:就是需要用的RTMP模块

网上其他配置是有ipv6参数的,我这个配置时提示不支持ipv6,我就给去掉了。

运行成功后就会在build目录下生成对应模块目录及Makefile文件,到这里MSYS这个工具的使命就完成了。

接下来呢不要急着进行Make,需要改下build目录下的Makefile文件,因为有些是Windows环境不支持的命令:

看前面几行有CFLAGS的配置,你在这里修改-W3跟-WX选项也一样,如果在开始的时候没有修改auto\cc\msvc文件的话

CFLAGS =  -O2  -W3 -WX -nologo -MT -Zi -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H

然后开始搜索openssl关键字,开几个头文件引用的是否正确,确保引用目录为存放openssl头文件的include目录;

然后找到build/nginx.exe:选项,找到选项最后的    kernel32.lib user32.lib advapi32.lib ws2_32.lib部分,在后面添加legacy_stdio_definitions.lib,否则编译会报错一些系统自带的函数找不到,添加./libs/openssl/libcrypto32MT.lib ./libs/openssl/libssl32MT.lib引用,因为CFLAGS用的选项是-MT,静态库对应用MT版本,截图:

然后还需要注释掉一部分配置代码,因为Windows下没有sed命令,虽然对编译结果没影响,但每次都报错失败也是不舒服的,既然不支持就注释掉吧:

manpage是生成说明文档,将调用manpage处也注释掉即可。

好了,现在就可以用VS2017的开发人员命令工具进行编译了,打开开发人员命令工具,进入到nginx项目目录,然后使用命令

nmake -f build/Makefile即可,nginx项目目录也有一个Makefile文件,可以无视。。。

编译到最后你会发现还是会有错误的偷笑,提示“无法解析的外部符号 ___iob_func 处理方法”,是的,没错,这是VS2015后对你的特殊优待,直接说答案吧,在build目录中生成的ngx_auto_config.h头文件里添加代码:

FILE* __cdecl __iob_func(unsigned i)
{
    return __acrt_iob_func(i);

}

在#define NGX_CONFIGURE宏定义的下面一行添加即可,然后编辑如无意外的话就过了~!

资源包下载地址:https://download.youkuaiyun.com/download/xinxinsky/10331187

优快云最低资源分是2分,没有0分选项了,只能帮你们到这里了。。。

nginx-1.15.5-win64-vs2017-v141-sdk10.0.17134.12 nginx的64位版本。 编译参数: auto/configure --with-cc=cl --builddir=objs --prefix= --conf-path=conf/nginx.conf --error-log-path=logs/nginx_error.log --http-log-path=logs/nginx_access.log --pid-path=logs/nginx.pid --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --http-scgi-temp-path=temp/scgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-http_ssl_module --with-select_module --with-openssl=openssl --with-pcre=pcre --with-zlib=zlib 立即下载

相关推荐

WIN10+VS2017编译nginx用到的资源包

WIN10+VS2017环境下编译nginx-1.12及rtmp module备忘 中用到的资源包,里面包括交叉环境工具MSYS-1.0.11.exe以及官方编译的OpenSSL-1_1_0h的静态库及头文件,博文地址: https://blog.csdn.net/xinxinsky/article/details/79838769

VS2017使用项目管理编译Nginx与RTMP Module

本项目已开源,地址:https://github.com/Car-eye-team/Car-eye-RTMP-server/tree/master/source/nginx_windows继昨天利用VS的命令工具nmake工具将nginx编译通过后就心思如何利用VS项目对nginx进行管理编译,网上资料不多,自己摸索吧,没想到不是很难,记录一下。使用VS2017创建一个空的Console项目,将里...

路过的Blog 1835

最新版电子发票样式html+css--普通发票+增值发票

【代码】最新版电子发票样式html+css--普通发票+增值发票。

weixin_44110923的博客 3678

windows、vs2017编译64位openssl-1.1.1v及使用

如上,管理员身份使用vs2017的命令行工具分别执行perl -v和nasm -v,得到版本信息则两个工具的环境已经正常;如上,需确保两个工具的路径存在于环境变量中,如没有,请手动添加;安装到目录:nmake install。以上两个工具都全部默认安装即可;

hx0318的博客 1298

科研党必备:5个高效查找论文开源代码的宝藏网站(附实战技巧)

本文为科研工作者推荐5个高效查找论文开源代码的宝藏网站,包括ResearchCode和PapersWithCode等工具,提供实战技巧如进阶搜索语法和代码质量评估体系,帮助快速定位高质量实现并提升复现效率。特别分享隐藏代码库的检索方法和智能工作流配置,助力科研党高效完成论文复现。

weixin_28829629的博客 401

物联网开发笔记(34)- 使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

zhusongziye的博客 1万+

nginx1.21在windows下vs交叉编译rtmp模块

最近需要自己编译windows版本的nginx,为研究源码做个准备。找了一大堆资料,看的脑袋疼,交叉编译真是比较麻烦,比linux麻烦多了,整了几个小时才完成。。 感谢前辈们的参考资料,但是应该大家碰到的问题不完全一致,可能和机器以及下载的版本有关。有些坑踩完了后边估计可能忘了,极力回想了一下补了一篇文章。欢迎补充。 1.下载并安装msys2,用于生成makefile文件 2.电脑需要有vs环境,使用它的nmake编译,我用的vs2017 3.下载nginx-rtmp相关的依赖,三个包准备好Open

luiio的博客 566

你一直忽略的神器:离你最近的超强语音输入法(微信语音输入全攻略,支持全局混用)

你一直忽略的语音输入工具🎤 ,其实就在身边!无需额外软件,即可实现全局语音转文字⚡ 支持中英文混输,还能与其他输入法混合使用,聊天、办公都能高效完成,让你的输入效率轻松翻倍🚀

XiaoqiangClub的博客 905

编译 nginx + http-flv 模块

Windows下编译 nginx + http-flv 模块 一、源码准备 1、下载nginx 官网上下载的缺少文件编译会有错误,使用github上的版本。下载链接https://github.com/nginx/nginx/releases 2、下载PCRE 3、下载zlib 4、下载OpenSSL 5、下载nginx-http-flv-module 二、编译环境准备 1、下载安装MSYS2 下载链接https://www.msys2.org,默认安装即可。 2、下载安装Strawberry Perl 下

u014790938的专栏 2489

VisionPro 机器视觉案例 之 硬币识别

CogPMAlignTool模板匹配工具 掩模

机器视觉李小白的博客 1892

国科大学习资料--数据挖掘(刘莹)--第三章习题及参考答案

国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 第 3 章分类与回归 3.1简述决策树分类的主要步骤。 答:决策树生成的过程如下: (1)对数据源进行数据预处理, 得到训练集和测试集; (2)对训练集进行训练; (3)对初始决策树进行树剪枝; (4)由所得到的决策树提取分类规则; (5)使用测试数据集进行预测,评估决策树模型; 3.2给定决策树,选项有:(1)将决策树转换成规则,然后对结果

无名何许人的博客 3091

Windows下编译安装Nginx并添加 SNI代理模块

Windows下编译安装Nginx

紫夜若涵的博客 3260

VS2022编译xlnt库

xlnt是一个用于读写Excel文件的C++库,本文介绍如何用源代码编译静态或动态xlnt库

QQVQQ的博客 7288

windows下编译nginx-http-flv-moudle

windows下编译nginx-http-flv-moudle一: 编译前准备1:msys(1.0.11内含mingw命令行工具)2:perl (ActivePerl 5.28,草莓版好像会编译出错,具体原因不知)3:nasm(2.11.02)4:sed5:nginx-http-flv-moudle6:zlib(1.2.11,Zlib是一个压缩和解压模块)7:openssl(1.1.1d,加密)8:pcre(8.3.4perl语言兼容正则表达式)二:开始编译1:windows先安装vs,若已安装跳过。未安装

tian_tang_g的博客 2412

Python 3.13.7 (64-bit)安装弹窗提示:Setup failed:0x80070643 - 安装时发生严重错误...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2115

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

nginx的编译

1.>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sys\types.h(91): error C2371: 'off_t' : redefinition; different basic types \openssl\buffer.h(70):#if !defined(NO_SYS_TYPES_H)   #i

AI_Apple的专栏 624

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Nginx 在 windows 环境下编译

本文介绍了在windows环境下编译nginx过程

qq_41134073的博客 3147

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何在 Visual Studio 编译调试 Windows 版本的 Nginx 源码?

注意:如果在这个过程中提示找不到 sed,sed 原是 Linux 下的程序,我们安装了 MSYS2 之后,在 MSYS2 安装目录下就有了这个文件,叫 sed.exe,将这个文件添加到电脑环境变量 PATH 中即可,例如我的机器上的目录是 D:\msys64\usr\bin。我们将 ngx_modules.c 和同目录下 ngx_auto_headers.h 和 ngx_auto_config.h 添加到工程中去,为了保持目录结构,我们在工程中新建一个 objs 目录。

张小方的博客 1113

如何在 Visual Studio 编译调试 Windows 版本的 Nginx 源码

在 Windows 上使用 Visual Studio 编译和调试 Nginx 源码需要一些特殊的准备工作,因为 Nginx 原生是为类 Unix 系统设计的。以下是详细的操作步骤,包括编译和调试的全流程。通过上述步骤,你可以成功在 Windows 上使用 Visual Studio 编译和调试 Nginx 源码。这种实践不仅能帮助你深入理解 Nginx 的内部实现,还能提升你的 C 编程和调试能力。确保以下工具的路径已添加到系统环境变量。

小宝哥Code的专栏 2382

vs2013调试nginx

nginx下载地址 1、 新建文件夹以及文件 2、 修改ngx_module.c文件,将新增的文件名加进去: 代码 #include <ngx_config.h> #include <ngx_core.h> #include <ngx_http.h> static ngx_int_t ngx_ext_sunx_handler(ngx_http_request_t *r); static char* ngx_ext_sunx(ngx_conf_t *cf, n

qq_23350817的博客 1510

Win10下搭建Vs2017+CUDA开发环境

 最近开始进行机器学习相关的学习,TensorFlow下CPU的计算速度实在是不理想,需要引入CUDA对于GPU的支持,由于已经有了的Vs2017的环境,在此基础上安装CUDA9.1版本碰到了一些小问题,在此跟大家分享其中的一些坑。         CUDA可以在NVIDIA官网根据自己的操作系统以及需要的版本进行下载,下载后在安装的过程中,建议使用默认安装路径,安装过程中如果出现错误,请不要着...

p312011150的博客 1万+

Windows下编译OpenJDK7

在Windows下编译OpenJDK是一个艰难的过程...平台:WindowsXP+cygwin,OpenJDK版本:OpenJDK7,编译器:VS2010之所以选用OpenJDK7,是因为OpenJDK6中没有包含对VS2010的支持,OpenJDK7考虑了VS2010。由于过程比较漫长,我就不详述了。类似于代码下载,cygwin安装等,请读者按照OpenJDK官网的编译说明来操作。我说一下编译过程中遇到的问题(下面的路径使用"~"代指我的OpenJDK7源码存放根目录)。1. JDK版本问题为求稳定,我

intimater的专栏 8668

win10+vs2013+caffe

之前用happynear大神的方法配置成功win7下的caffe,做完毕设,现在换了台电脑,gtx960m,进行Win10下的caffe配置,还要配置tensorflow,,据说木有Windows版本啊~待我琢磨Linux下怎么配置去,,木有接触过好蓝过~   注:本文参考happynear大神的配置,感谢感谢!!! 一、    准备工作: 1、cuda7.5: https://dev

dpysunny的博客 3310

Windows 源码编译 nginx (加入nginx-http-flv-module)

Windows 源码编译 nginx (加入nginx-http-flv-module)

像我这样的人 3551

Windows10下编译Nginx源码

window版本nginx源码编译

RzzZ的博客 5775
上一篇: 使用FFMPEG3.4.2版本进行视频的解码为YUV格式
下一篇: VS2017使用项目管理编译Nginx与RTMP Module
路过&
博客等级 码龄19年 126粉丝 91原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值